#
#======================================================================
+use SL::FU;
use SL::IR;
use SL::IS;
use SL::PE;
-use List::Util qw(max);
+use List::Util qw(max sum);
require "bin/mozilla/io.pl";
+require "bin/mozilla/invoice_io.pl";
require "bin/mozilla/arap.pl";
require "bin/mozilla/common.pl";
require "bin/mozilla/drafts.pl";
sub add {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
return $lxdebug->leave_sub() if (load_draft_maybe());
$form->{title} = $locale->text('Add Vendor Invoice');
sub edit {
$lxdebug->enter_sub();
-
+
+ $auth->assert('vendor_invoice_edit');
+
# show history button
$form->{javascript} = qq|<script type=text/javascript src=js/show_history.js></script>|;
#/show hhistory button
sub invoice_links {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
# create links
$form->{webdav} = $webdav;
$form->{jsscript} = 1;
sub prepare_invoice {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
if ($form->{id}) {
map { $form->{$_} =~ s/\"/"/g } qw(invnumber ordnumber quonumber);
sub form_header {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
# set option selected
foreach $item (qw(AP vendor currency department)) {
$form->{"select$item"} =~ s/ selected//;
my @old_project_ids = ($form->{"globalproject_id"});
map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"};
- $form->get_lists("contacts" => "ALL_CONTACTS",
- "projects" => { "key" => "ALL_PROJECTS",
- "all" => 0,
- "old_id" => \@old_project_ids },
- "taxzones" => "ALL_TAXZONES",
- "employees" => "ALL_SALESMEN",
- "currencies" => "ALL_CURRENCIES",
- "vendors" => "ALL_VENDORS");
+ $form->get_lists("contacts" => "ALL_CONTACTS",
+ "projects" => { "key" => "ALL_PROJECTS",
+ "all" => 0,
+ "old_id" => \@old_project_ids },
+ "taxzones" => "ALL_TAXZONES",
+ "employees" => "ALL_SALESMEN",
+ "currencies" => "ALL_CURRENCIES",
+ "vendors" => "ALL_VENDORS",
+ "price_factors" => "ALL_PRICE_FACTORS");
my %labels;
my @values = (undef);
<input type=button name=invdate id="trigger1" value=| . $locale->text('button') . qq|></td>\n|;
$button2 = qq|
<td width="13"><input name=duedate id=duedate size=11 title="$myconfig{dateformat}" value="$form->{duedate}" onBlur=\"check_right_date_format(this)\">
- <input type=button name=duedate id="trigger2" value=| . $locale->text('button') . qq|></td></td>\n|;
+ <input type=button name=duedate id="trigger2" value=| . $locale->text('button') . qq|></td>\n|;
#write Trigger
$jsscript =
"invdate", "BL", "trigger1",
"duedate", "BL", "trigger2");
+ my $follow_up_vc = $form->{vendor};
+ $follow_up_vc =~ s/--.*?//;
+ my $follow_up_trans_info = "$form->{invnumber} ($follow_up_vc)";
+
$form->{javascript} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
$form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
$form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
+ $form->{javascript} .= qq|<script type="text/javascript" src="js/follow_up.js"></script>|;
$jsscript .= $form->write_trigger(\%myconfig, 2, "orddate", "BL", "trigger_orddate", "quodate", "BL", "trigger_quodate");
sub form_footer {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
$form->{invtotal} = $form->{invsubtotal};
if (($rows = $form->numtextrows($form->{notes}, 25, 8)) < 2) {
$form->{invtotal} =
$form->format_amount(\%myconfig, $form->{invtotal}, 2, 0);
+ my $follow_ups_block;
+ if ($form->{id}) {
+ my $follow_ups = FU->follow_ups('trans_id' => $form->{id});
+
+ if (@{ $follow_ups} ) {
+ my $num_due = sum map { $_->{due} * 1 } @{ $follow_ups };
+ $follow_ups_block = qq|
+ <tr>
+ <td colspan="2">| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq|</td>
+ </tr>
+|;
+ }
+ }
+
print qq|
<tr>
<td colspan=$colspan>
<td>$notes</td>
<td>$intnotes</td>
</tr>
+ $follow_ups_block
</table>
</td>
<td colspan=2 align=right width=100%>
}
print qq|<input class=submit type=submit name=action value="|
. $locale->text('Use As Template') . qq|">
+ <input type="button" class="submit" onclick="follow_up_window()" value="|
+ . $locale->text('Follow-Up')
+ . qq|">
|;
}
}
print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers);
- $form->hide_form(qw(rowcount callback draft_id draft_description login password));
+ $form->hide_form(qw(rowcount callback draft_id draft_description));
# button for saving history
if($form->{id} ne "") {
sub mark_as_paid {
$lxdebug->enter_sub();
+
+ $auth->assert('vendor_invoice_edit');
+
&mark_as_paid_common(\%myconfig,"ap");
+
$lxdebug->leave_sub();
}
sub update {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining);
&check_name(vendor);
map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit);
map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] };
+ $form->{"marge_price_factor_$i"} = $form->{item_list}->[0]->{price_factor};
+
($sellprice || $form->{"sellprice_$i"}) =~ /\.(\d+)/;
$decimalplaces = max 2, length $1;
sub storno {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
if ($form->{storno}) {
$form->error($locale->text('Cannot storno storno invoice!'));
}
sub use_as_template {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
map { delete $form->{$_} } qw(printed emailed queued invnumber invdate deliverydate id datepaid_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno);
$form->{paidaccounts} = 1;
$form->{rowcount}--;
sub post_payment {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
for $i (1 .. $form->{paidaccounts}) {
if ($form->{"paid_$i"}) {
sub post {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("invdate", $locale->text('Invoice Date missing!'));
sub delete {
$lxdebug->enter_sub();
+ $auth->assert('vendor_invoice_edit');
+
$form->header;
print qq|
<body>
map { delete $form->{$_} } qw(action header);
foreach $key (keys %$form) {
+ next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
$form->{$key} =~ s/\"/"/g;
print qq|<input type=hidden name=$key value="$form->{$key}">\n|;
}
sub yes {
$lxdebug->enter_sub();
+
+ $auth->assert('vendor_invoice_edit');
+
if (IR->delete_invoice(\%myconfig, \%$form)) {
# saving the history
if(!exists $form->{addition}) {