X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=2cbf9cd3fa08da6af4ec84dcedba4ddd675f2b16;hb=e6ef45f2d8a980a68bd54df8c2afce4e0203c289;hp=31d017eefc919a2edde0031a09812a1fc6310da9;hpb=195883fdfd3b10f329036767f027baa6e7c402b9;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 31d017eef..2cbf9cd3f 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -35,8 +35,9 @@ use SL::IS; use SL::PE; use Data::Dumper; -require "$form->{path}/io.pl"; -require "$form->{path}/arap.pl"; +require "bin/mozilla/io.pl"; +require "bin/mozilla/arap.pl"; +require "bin/mozilla/drafts.pl"; 1; @@ -45,10 +46,22 @@ require "$form->{path}/arap.pl"; sub add { $lxdebug->enter_sub(); - $form->{title} = $locale->text('Add Sales Invoice'); + return $lxdebug->leave_sub() if (load_draft_maybe()); + + if ($form->{type} eq "credit_note") { + $form->{title} = $locale->text('Add Credit Note'); + + if ($form->{storno}) { + $form->{title} = $locale->text('Add Storno Credit Note'); + } + } else { + $form->{title} = $locale->text('Add Sales Invoice'); + + } + $form->{callback} = - "$form->{script}?action=add&type=$form->{type}&login=$form->{login}&path=$form->{path}&password=$form->{password}" + "$form->{script}?action=add&type=$form->{type}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; $form{jsscript} = "date"; @@ -57,7 +70,6 @@ sub add { { $form->error("Access Denied"); } - &invoice_links; &prepare_invoice; &display_form; @@ -67,16 +79,29 @@ sub add { sub edit { $lxdebug->enter_sub(); -print STDERR "is.pl-edit\n"; - $form->{title} = $locale->text('Edit Sales Invoice'); + + # show history button + $form->{javascript} = qq||; + #/show hhistory button if ($myconfig{acs} =~ "AR--Add Sales Invoice" || $myconfig{acs} =~ "AR--AR") { $form->error("Access Denied"); } - + $edit = 1; + if ($form->{print_and_post}) { + $form->{action} = "print"; + $form->{resubmit} = 1; + $language_id = $form->{language_id}; + $printer_id = $form->{printer_id}; + } &invoice_links; &prepare_invoice; + if ($form->{print_and_post}) { + $form->{language_id} = $language_id; + $form->{printer_id} = $printer_id; + } + &display_form; $lxdebug->leave_sub(); @@ -84,7 +109,7 @@ print STDERR "is.pl-edit\n"; sub invoice_links { $lxdebug->enter_sub(); -print STDERR "is.pl-invoice_links\n"; + $form->{vc} = 'customer'; # create links @@ -96,27 +121,57 @@ print STDERR "is.pl-invoice_links\n"; 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}; } } + + if ($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + if ($form->{language_id}) { + $language_id = $form->{language_id}; + } + if ($form->{taxzone_id}) { + $taxzone_id = $form->{taxzone_id}; + } + if ($form->{id}) { + $id = $form->{id}; + } + if ($form->{shipto_id}) { + $shipto_id = $form->{shipto_id}; + } + $cp_id = $form->{cp_id}; IS->get_customer(\%myconfig, \%$form); + #quote all_customer Bug 133 + foreach $ref (@{ $form->{all_customer} }) { + $ref->{name} = $form->quote($ref->{name}); + } + if ($id) { + $form->{id} = $id; + } IS->retrieve_invoice(\%myconfig, \%$form); $form->{cp_id} = $cp_id; - # currencies - @curr = split /:/, $form->{currencies}; - chomp $curr[0]; - $form->{defaultcurrency} = $curr[0]; - - map { $form->{selectcurrency} .= "\n" } (@{ $form->{all_departments} }); } $form->{employee} = "$form->{employee}--$form->{employee_id}"; - # sales staff - if ($form->{all_employees}) { - $form->{selectemployee} = ""; - map { $form->{selectemployee} .= "\n"; } if ($key eq "AR_paid") { @@ -184,22 +233,28 @@ print STDERR "is.pl-invoice_links\n"; sub prepare_invoice { $lxdebug->enter_sub(); -print STDERR "is.pl-prepare_invoice\n"; - $form->{type} = "invoice"; - $form->{formname} = "invoice"; - $form->{format} = "html"; - $form->{media} = "screen"; + + if ($form->{type} eq "credit_note") { + $form->{type} = "credit_note"; + $form->{formname} = "credit_note"; + } else { + $form->{type} = "invoice"; + $form->{formname} = "invoice"; + } if ($form->{id}) { map { $form->{$_} =~ s/\"/"/g } qw(invnumber ordnumber quonumber shippingpoint shipvia notes intnotes); -# # get pricegroups for parts -# IS->get_pricegroups_for_parts(\%myconfig, \%$form); + # # get pricegroups for parts + # IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + my $i = 0; foreach $ref (@{ $form->{invoice_details} }) { $i++; + map { $form->{"${_}_$i"} = $ref->{$_} } keys %{$ref}; $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100); @@ -210,15 +265,17 @@ print STDERR "is.pl-prepare_invoice\n"; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); - $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); + + (my $dec_qty) = ($form->{"qty_$i"} =~ /\.(\d+)/); + $dec_qty = length $dec_qty; + + $form->{"qty_$i"} = + $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description unit partnotes); $form->{rowcount} = $i; -# # build up html code for prices_$i -# print STDERR "set_pricegroup aus is.pl-prepare_invoice\n"; -# set_pricegroup(); } } $lxdebug->leave_sub(); @@ -226,29 +283,222 @@ print STDERR "is.pl-prepare_invoice\n"; sub form_header { $lxdebug->enter_sub(); -print STDERR "is.pl-form_header\n"; + + if ($edit) { + + if ($form->{type} eq "credit_note") { + $form->{title} = $locale->text('Edit Credit Note'); + + if ($form->{storno}) { + $form->{title} = $locale->text('Edit Storno Credit Note'); + } + } else { + $form->{title} = $locale->text('Edit Sales Invoice'); + + if ($form->{storno}) { + $form->{title} = $locale->text('Edit Storno Invoice'); + } + } + } + + $form->{radier} = + ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0; + + $payment = qq||; + foreach $item (@{ $form->{payment_terms} }) { + if ($form->{payment_id} eq $item->{id}) { + $payment .= qq||; + } else { + $payment .= qq||; + } + } + + my $set_duedate_url = + "$form->{script}?login=$form->{login}&password=$form->{password}&action=set_duedate"; + + my $pjx = new CGI::Ajax( 'set_duedate' => $set_duedate_url ); + push(@ { $form->{AJAX} }, $pjx); + + 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", + "shipto" => "ALL_SHIPTO", + "projects" => { "key" => "ALL_PROJECTS", + "all" => 0, + "old_id" => \@old_project_ids }, + "employees" => "ALL_SALESMEN", + "taxzones" => "ALL_TAXZONES", + "currencies" => "ALL_CURRENCIES", + "customers" => "ALL_CUSTOMERS"); + + my %labels; + my @values = (undef); + foreach my $item (@{ $form->{"ALL_CONTACTS"} }) { + push(@values, $item->{"cp_id"}); + $labels{$item->{"cp_id"}} = $item->{"cp_name"} . + ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : ""); + } + my $contact; + if (scalar @values > 1) { + $contact = qq| + + | . $locale->text('Contact Person') . qq| + | . + NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{"cp_id"})) + . qq| + + |; + } + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_SALESMEN"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"name"}; + } + + my $employees = qq| + + | . $locale->text('Employee') . qq| + | . + NTI($cgi->popup_menu('-name' => 'employee', '-default' => $form->{"employee_id"}, + '-values' => \@values, '-labels' => \%labels)) . qq| + + |; + + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_CUSTOMERS"} }) { + push(@values, $item->{name}.qq|--|.$item->{"id"}); + $labels{$item->{name}.qq|--|.$item->{"id"}} = $item->{"name"}; + } + + my $customers = qq| + | . $locale->text('Customer') . qq| + | . + (($myconfig{vclimit} <= scalar(@values)) + ? qq|| + : (NTI($cgi->popup_menu('-name' => 'customer', '-default' => $form->{oldcustomer}, + '-onChange' => 'document.getElementById(\'update_button\').click();', + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| + + |; + + %labels = (); + @values = (""); + foreach my $item (@{ $form->{"ALL_SHIPTO"} }) { + push(@values, $item->{"shipto_id"}); + $labels{$item->{"shipto_id"}} = join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city); + } + + my $shipto; + if (scalar @values > 1) { + $shipto = qq| + + | . $locale->text('Shipping Address') . qq| + | . + NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{"shipto_id"})) + . qq||; + } + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_CURRENCIES"} }) { + push(@values, $item); + $labels{$item} = $item; + } + + $form->{currency} = $form->{defaultcurrency} unless $form->{currency}; + my $currencies; + if (scalar @values) { + $currencies = qq| + + | . $locale->text('Currency') . qq| + | . + NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"}, + '-values' => \@values, '-labels' => \%labels)) . qq| + + |; + } + + %labels = (); + @values = (""); + foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"projectnumber"}; + } + my $globalprojectnumber = + NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, + '-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| + | . $locale->text('Salesman') . qq| + | . + NTI($cgi->popup_menu('-name' => 'salesman_id', '-default' => $form->{salesman_id}, + '-values' => \@values, '-labels' => \%labels)) + . qq| + |; + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_TAXZONES"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"description"}; + } + + if (!$form->{"id"}) { + $taxzone = qq| + + | . $locale->text('Steuersatz') . qq| + | . + NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"}, + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px',)) . qq| + + |; + + } else { + $taxzone = qq| + + | . $locale->text('Steuersatz') . qq| + + + | . H($labels{$form->{"taxzone_id"}}) . qq| + + |; + } + # set option selected - foreach $item (qw(AR customer currency department employee contact)) { + foreach $item (qw(AR customer currency department employee)) { $form->{"select$item"} =~ s/ selected//; $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; } - #build contacts - if ($form->{all_contacts}) { + #quote customer Bug 133 + $form->{selectcustomer} = $form->quote($form->{selectcustomer}); - $form->{selectcontact} = ""; - foreach $item (@{ $form->{all_contacts} }) { - if ($form->{cp_id} == $item->{cp_id}) { - $form->{selectcontact} .= - "