1 #======================================================================
4 #======================================================================
6 # Saving and loading drafts
8 #======================================================================
20 $main::lxdebug->enter_sub();
22 my ($self, $form) = @_;
24 my ($module, $submodule);
26 $module = $form->{"script"};
28 if (grep({ $module eq $_ } qw(is ir ar ap))) {
29 $submodule = "invoice";
31 $submodule = "unknown";
34 $main::lxdebug->leave_sub();
36 return ($module, $submodule);
39 my @dont_save = qw(login password action);
46 $main::lxdebug->enter_sub();
48 my ($self, $myconfig, $form, $draft_id, $draft_description) = @_;
50 my ($dbh, $sth, $query, %saved, $dumped);
52 $dbh = $form->get_standard_dbh;
55 my ($module, $submodule) = $self->get_module($form);
57 $query = "SELECT COUNT(*) FROM drafts WHERE id = ?";
58 my ($res) = selectrow_query($form, $dbh, $query, $draft_id);
61 $draft_id = $module . "-" . $submodule . "-" . Common::unique_id();
62 $query = "INSERT INTO drafts (id, module, submodule) VALUES (?, ?, ?)";
63 do_query($form, $dbh, $query, $draft_id, $module, $submodule);
66 map({ $saved{$_} = $form->{$_};
67 delete($form->{$_}); } @dont_save);
69 $dumped = YAML::Dump($form);
70 map({ $form->{$_} = $saved{$_}; } @dont_save);
73 qq|UPDATE drafts SET description = ?, form = ?, employee_id = | .
74 qq| (SELECT id FROM employee WHERE login = ?) | .
77 do_query($form, $dbh, $query, $draft_description, $dumped, $form->{login}, $draft_id);
81 $form->{draft_id} = $draft_id;
82 $form->{draft_description} = $draft_description;
84 $main::lxdebug->leave_sub();
88 $main::lxdebug->enter_sub();
90 my ($self, $myconfig, $form, $draft_id) = @_;
92 my ($dbh, $sth, $query, @values);
94 $dbh = $form->get_standard_dbh;
96 $query = qq|SELECT id, description, form FROM drafts WHERE id = ?|;
98 $sth = prepare_execute_query($form, $dbh, $query, $draft_id);
100 if (my $ref = $sth->fetchrow_hashref()) {
101 @values = ($ref->{form}, $ref->{id}, $ref->{description});
105 $main::lxdebug->leave_sub();
111 $main::lxdebug->enter_sub();
113 my ($self, $myconfig, $form, @draft_ids) = @_;
115 return $main::lxdebug->leave_sub() unless (@draft_ids);
117 my ($dbh, $sth, $query);
119 $dbh = $form->get_standard_dbh;
121 $query = qq|DELETE FROM drafts WHERE id IN (| . join(", ", map { "?" } @draft_ids) . qq|)|;
122 do_query($form, $dbh, $query, @draft_ids);
126 $main::lxdebug->leave_sub();
130 $::lxdebug->enter_sub;
133 my $myconfig = shift || \%::myconfig;
134 my $form = shift || $::form;
135 my $dbh = $form->get_standard_dbh;
137 my @list = selectall_hashref_query($form, $dbh, <<SQL, $self->get_module($form));
138 SELECT d.id, d.description, d.itime::timestamp(0) AS itime,
139 e.name AS employee_name
141 LEFT JOIN employee e ON d.employee_id = e.id
142 WHERE (d.module = ?) AND (d.submodule = ?)
146 $::lxdebug->leave_sub;