require "$form->{path}/io.pl";
require "$form->{path}/arap.pl";
+require "bin/mozilla/drafts.pl";
1;
sub add {
$lxdebug->enter_sub();
-
+
+ return $lxdebug->leave_sub() if (load_draft_maybe());
+
if ($form->{type} eq "credit_note") {
$form->{title} = $locale->text('Add Credit Note');
if ($form->{all_customer}) {
unless ($form->{customer_id}) {
$form->{customer_id} = $form->{all_customer}->[0]->{id};
+ $form->{salesman_id} = $form->{all_customer}->[0]->{salesman_id};
}
}
"shipto" => "ALL_SHIPTO",
"projects" => { "key" => "ALL_PROJECTS",
"all" => 0,
- "old_id" => \@old_project_ids });
+ "old_id" => \@old_project_ids },
+ "employees" => "ALL_SALESMEN");
my (%labels, @values);
foreach my $item (@{ $form->{"ALL_CONTACTS"} }) {
'-labels' => \%labels,
'-default' => $form->{"globalproject_id"}));
+ %labels = ();
+ @values = ("");
+ foreach my $item (@{ $form->{ALL_SALESMEN} }) {
+ push(@values, $item->{id});
+ $labels{$item->{id}} = $item->{name} ne "" ? $item->{name} : $item->{login};
+ }
+
+ $salesman =
+ qq|<tr>
+ <th align="right">| . $locale->text('Salesman') . qq|</th>
+ <td>| .
+ NTI($cgi->popup_menu('-name' => 'salesman_id', '-default' => $form->{salesman_id},
+ '-values' => \@values, '-labels' => \%labels))
+ . qq|</td>
+ </tr>|;
+
# set option selected
foreach $item (qw(AR customer currency department employee)) {
$form->{"select$item"} =~ s/ selected//;
<input type=hidden name=storno value=$form->{storno}>
<input type=hidden name=storno_id value=$form->{storno_id}>
-
+| . ($form->{saved_message} ? qq|<p>$form->{saved_message}</p>| : "") . qq|
<table width=100%>
<tr class=listtop>
<td align=right>
<table>
<tr>
- <th align=right nowrap>| . $locale->text('Salesperson') . qq|</th>
+ <th align=right nowrap>| . $locale->text('Employee') . qq|</th>
<td colspan=2><select name=employee>$form->{selectemployee}</select></td>
<input type=hidden name=selectemployee value="$form->{selectemployee}">
<td></td>
- </tr>|;
+ </tr>
+ $salesman
+|;
if ($form->{type} eq "credit_note") {
print qq| <tr>
<th align=right nowrap>| . $locale->text('Credit Note Number') . qq|</th>
$tax .= qq|
<tr>
- <th align=right>$form->{"${item}_description"} |
- . $form->{"${item}_rate"} * 100 .qq|%</th>
+ <th align=right>$form->{"${item}_description"} |
+ . $form->{"${item}_rate"} * 100 .qq|%</th>
<td align=right>$form->{"${item}_total"}</td>
</tr>
|;
$tax .= qq|
<tr>
<th align=right>Enthaltene $form->{"${item}_description"} |
- . $form->{"${item}_rate"} * 100 .qq|%</th>
+ . $form->{"${item}_rate"} * 100 .qq|%</th>
<td align=right>$form->{"${item}_total"}</td>
</tr>
<tr>
$closedto = $form->datetonum($form->{closedto}, \%myconfig);
if ($form->{id}) {
+ my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar");
+
print qq|
<input class=submit type=submit accesskey="u" name=action id=update_button value="|
. $locale->text('Update') . qq|">
<input class=submit type=submit name=action value="|
. $locale->text('Print') . qq|">
<input class=submit type=submit name=action value="|
- . $locale->text('E-mail') . qq|">|;
+ . $locale->text('E-mail') . qq|"> |;
print qq|<input class=submit type=submit name=action value="|
- . $locale->text('Storno') . qq|">| unless ($form->{storno});
+ . $locale->text('Storno') . qq|"> | if ($show_storno);
print qq|<input class=submit type=submit name=action value="|
. $locale->text('Post Payment') . qq|">
|;
<input class=submit type=submit name=action value="|
. $locale->text('Print and Post') . qq|">
<input class=submit type=submit name=action value="|
- . $locale->text('Post') . qq|">|;
+ . $locale->text('Post') . qq|"> | .
+ NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'),
+ '-class' => 'submit'));
}
}
<input type=hidden name=rowcount value=$form->{rowcount}>
<input name=callback type=hidden value="$form->{callback}">
-
+|
+. $cgi->hidden('-name' => 'draft_id', '-default' => [$form->{draft_id}])
+. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}])
+. qq|
<input type=hidden name=path value=$form->{path}>
<input type=hidden name=login value=$form->{login}>
<input type=hidden name=password value=$form->{password}>
$form->{id} = 0 if $form->{postasnew};
# get new invnumber in sequence if no invnumber is given or if posasnew was requested
- if (!$form->{invnumber} || $form->{postasnew}) {
+ if ($form->{postasnew}) {
if ($form->{type} eq "credit_note") {
- $form->{invnumber} = $form->update_defaults(\%myconfig, "cnnumber");
+ undef($form->{cnnumber});
} else {
- $form->{invnumber} = $form->update_defaults(\%myconfig, "invnumber");
+ undef($form->{invnumber});
}
}
+
relink_accounts();
- if ($print_post) {
- if (!(IS->post_invoice(\%myconfig, \%$form))) {
- $form->error($locale->text('Cannot post invoice!'));
- }
- # saving the history
- if(!exists $form->{addition}) {
- $form->{addition} = "PRINTED AND POSTED";
- $form->save_history($form->dbconnect(\%myconfig));
- }
- # /saving the history
-
- } else {
- if (IS->post_invoice(\%myconfig, \%$form)){
- # saving the history
- if(!exists $form->{addition}) {
- if($form->{storno}) {
- $form->{addition} = "STORNO";
- }
- else {
- $form->{addition} = "POSTED";
- }
- $form->save_history($form->dbconnect(\%myconfig));
- }
- # /saving the history
-
- $form->redirect(
- $form->{label} . " $form->{invnumber} " . $locale->text('posted!'));
- }
- $form->error($locale->text('Cannot post invoice!'));
+ $form->error($locale->text('Cannot post invoice!'))
+ unless IS->post_invoice(\%myconfig, \%$form);
+ remove_draft() if $form->{remove_draft};
+
+ if(!exists $form->{addition}) {
+ $form->{addition} = $print_post ? "PRINTED AND POSTED" :
+ $form->{storno} ? "STORNO" :
+ "POSTED";
+ $form->save_history($form->dbconnect(\%myconfig));
}
+
+ $form->redirect( $form->{label} . " $form->{invnumber} " . $locale->text('posted!'))
+ unless $print_post;
$lxdebug->leave_sub();
}
$form->error($locale->text('Cannot storno storno invoice!'));
}
+ if (IS->has_storno(\%myconfig, $form, "ar")) {
+ $form->error($locale->text("Invoice has already been storno'd!"));
+ }
+
+ map({ my $key = $_; delete($form->{$key})
+ unless (grep({ $key eq $_ } qw(path login password id type))); }
+ keys(%{ $form }));
+
+ &invoice_links;
+ &prepare_invoice;
+ relink_accounts();
+
$form->{storno_id} = $form->{id};
$form->{storno} = 1;
$form->{id} = "";
$lxdebug->leave_sub();
}
+
+sub e_mail {
+ $lxdebug->enter_sub();
+
+ $print_post = 1;
+
+ &post;
+
+ &edit_e_mail;
+
+ $lxdebug->leave_sub();
+}