1 #======================================================================
 
   4 #======================================================================
 
   6 # Saving and loading drafts
 
   8 #======================================================================
 
  18   $main::lxdebug->enter_sub();
 
  20   my ($self, $form) = @_;
 
  22   my ($module, $submodule);
 
  24   $module = $form->{"script"};
 
  26   if (grep({ $module eq $_ } qw(is ir ar ap))) {
 
  27     $submodule = "invoice";
 
  29     $submodule = "unknown";
 
  32   $main::lxdebug->leave_sub();
 
  34   return ($module, $submodule);
 
  38   $main::lxdebug->enter_sub();
 
  40   my ($self, $myconfig, $form, $draft_id, $draft_description) = @_;
 
  42   my ($dbh, $sth, $query, %saved, @dont_save, $dumped);
 
  44   $dbh = $form->dbconnect_noauto($myconfig);
 
  46   my ($module, $submodule) = $self->get_module($form);
 
  48   $query = "SELECT COUNT(*) FROM drafts WHERE id = ?";
 
  49   my ($res) = selectrow_query($form, $dbh, $query, $draft_id);
 
  51     $draft_id = $module . "-" . $submodule . "-" . Common::unique_id();
 
  52     $query = "INSERT INTO drafts (id, module, submodule) VALUES (?, ?, ?)";
 
  53     do_query($form, $dbh, $query, $draft_id, $module, $submodule);
 
  56   @dont_save = qw(login password path action);
 
  57   map({ $saved{$_} = $form->{$_};
 
  58         delete($form->{$_}); } @dont_save);
 
  59   $dumped = YAML::Dump($form);
 
  60   map({ $form->{$_} = $saved{$_}; } @dont_save);
 
  63     qq|UPDATE drafts SET description = ?, form = ?, employee_id = | .
 
  64     qq|  (SELECT id FROM employee WHERE login = ?) | .
 
  67   do_query($form, $dbh, $query, $draft_description, $dumped,
 
  68            $form->{login}, $draft_id);
 
  73   $form->{draft_id} = $draft_id;
 
  74   $form->{draft_description} = $draft_description;
 
  76   $main::lxdebug->leave_sub();
 
  80   $main::lxdebug->enter_sub();
 
  82   my ($self, $myconfig, $form, $draft_id) = @_;
 
  84   my ($dbh, $sth, $query, @values);
 
  86   $dbh = $form->dbconnect($myconfig);
 
  88   $query = qq|SELECT id, description, form FROM drafts WHERE id = ?|;
 
  90   $sth = $dbh->prepare($query);
 
  91   $sth->execute($draft_id) || $form->dberror("$query ($draft_id)");
 
  94   if (my $ref = $sth->fetchrow_hashref()) {
 
  95     @values = ($ref->{form}, $ref->{id}, $ref->{description});
 
  99 #  do_query($form, $dbh, "DELETE FROM drafts WHERE id = ?", $draft_id);
 
 103   $main::lxdebug->leave_sub();
 
 109   $main::lxdebug->enter_sub();
 
 111   my ($self, $myconfig, $form, @draft_ids) = @_;
 
 113   return $main::lxdebug->leave_sub() unless (@draft_ids);
 
 115   my ($dbh, $sth, $query);
 
 117   $dbh = $form->dbconnect($myconfig);
 
 119   $query = qq|DELETE FROM drafts WHERE id IN (| .
 
 120     join(", ", map({ "?" } @draft_ids)) . qq|)|;
 
 121   do_query($form, $dbh, $query, @draft_ids);
 
 125   $main::lxdebug->leave_sub();
 
 129   $main::lxdebug->enter_sub();
 
 131   my ($self, $myconfig, $form) = @_;
 
 133   my ($dbh, $sth, $query, @values);
 
 135   $dbh = $form->dbconnect($myconfig);
 
 137   my ($module, $submodule) = $self->get_module($form);
 
 141     qq|SELECT d.id, d.description, d.itime::timestamp(0) AS itime, | .
 
 142     qq|  e.name AS employee_name | .
 
 144     qq|LEFT JOIN employee e ON d.employee_id = e.id | .
 
 145     qq|WHERE (d.module = ?) AND (d.submodule = ?) | .
 
 146     qq|ORDER BY d.itime|;
 
 147   my @values = ($module, $submodule);
 
 149   $sth = $dbh->prepare($query);
 
 150   $sth->execute(@values) ||
 
 151     $form->dberror($query . " (" . join(", ", @values) . ")");
 
 153   while (my $ref = $sth->fetchrow_hashref()) {
 
 160   $main::lxdebug->leave_sub();