#=====================================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
# Web http://www.lx-office.org
#
#
# XIII form retrieval
#
#======================================================================

package XIII;

sub retrieve_form {
  $main::lxdebug->enter_sub();

  my ($self, $myconfig, $form) = @_;

  my $dbh   = $form->dbconnect($myconfig);
  my $query = qq|SELECT f.line
                 FROM xiii_forms f
                 WHERE f.file = '$form->{file}'
		 AND f.dbname = '$myconfig->{dbname}'
		 ORDER BY f.oid|;
  my $sth = $dbh->prepare($query);
  $sth->execute || $form->dberror($query);

  my $ref;

  while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
    push @{ $form->{body} }, $ref->{line};
  }

  $sth->finish;

  $dbh->disconnect;

  $main::lxdebug->leave_sub();
}

sub delete_form {
  $main::lxdebug->enter_sub();

  my ($self, $myconfig, $form) = @_;

  # connect to database, turn AutoCommit off
  my $dbh = $form->dbconnect_noauto($myconfig);

  my $query = qq|DELETE FROM xiii_forms
                 WHERE file = '$form->{file}'
		 AND dbname = '$myconfig->{dbname}'|;
  $dbh->do($query) || $form->dberror($query);

  # commit and redirect
  $rc = $dbh->commit;
  $dbh->disconnect;

  $main::lxdebug->leave_sub();

  return $rc;
}

sub save_form {
  $main::lxdebug->enter_sub();

  my ($self, $myconfig, $form) = @_;

  # connect to database, turn AutoCommit off
  my $dbh = $form->dbconnect_noauto($myconfig);

  my $query = qq|DELETE FROM xiii_forms
                 WHERE file = '$form->{file}'
		 AND dbname = '$myconfig->{dbname}'|;
  $dbh->do($query) || $form->dberror($query);

  $query = qq|INSERT INTO xiii_forms (line, file, dbname)
              VALUES (?, '$form->{file}', '$myconfig->{dbname}')|;

  $sth = $dbh->prepare($query);

  foreach $line (split /\r/, $form->{body}) {
    $sth->execute($line) || $form->dberror($query);
    $sth->finish;
  }

  $rc = $dbh->commit;
  $dbh->disconnect;

  $main::lxdebug->leave_sub();

  return $rc;
}

1;

