X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Foe.pl;h=eb5772ef8571443c3ee2505dce80a0c908029d56;hb=6dc16826718038718653bb07b130299fe2366e45;hp=baa041f364d9288bd5da8c5070f8d38153c946d3;hpb=081a4f9736f3bc345872be8f61632cbed4a8d9b3;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index baa041f36..eb5772ef8 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -30,6 +30,7 @@ # Order entry module # Quotation module #====================================================================== +use Data::Dumper; use SL::OE; use SL::IR; @@ -43,26 +44,59 @@ require "$form->{path}/arap.pl"; # end of main -sub add { +# For locales.pl: +# $locale->text('Edit the purchase_order'); +# $locale->text('Edit the sales_order'); +# $locale->text('Edit the request_quotation'); +# $locale->text('Edit the sales_quotation'); + +# $locale->text('Workflow purchase_order'); +# $locale->text('Workflow sales_order'); +# $locale->text('Workflow request_quotation'); +# $locale->text('Workflow sales_quotation'); + +sub set_headings { $lxdebug->enter_sub(); + my ($action) = @_; + if ($form->{type} eq 'purchase_order') { - $form->{title} = $locale->text('Add Purchase Order'); - $form->{vc} = 'vendor'; + $form->{title} = $action eq "edit" ? + $locale->text('Edit Purchase Order') : + $locale->text('Add Purchase Order'); + $form->{heading} = $locale->text('Purchase Order'); + $form->{vc} = 'vendor'; } if ($form->{type} eq 'sales_order') { - $form->{title} = $locale->text('Add Sales Order'); - $form->{vc} = 'customer'; + $form->{title} = $action eq "edit" ? + $locale->text('Edit Sales Order') : + $locale->text('Add Sales Order'); + $form->{heading} = $locale->text('Sales Order'); + $form->{vc} = 'customer'; } if ($form->{type} eq 'request_quotation') { - $form->{title} = $locale->text('Add Request for Quotation'); - $form->{vc} = 'vendor'; + $form->{title} = $action eq "edit" ? + $locale->text('Edit Request for Quotation') : + $locale->text('Add Request for Quotation'); + $form->{heading} = $locale->text('Request for Quotation'); + $form->{vc} = 'vendor'; } if ($form->{type} eq 'sales_quotation') { - $form->{title} = $locale->text('Add Quotation'); - $form->{vc} = 'customer'; + $form->{title} = $action eq "edit" ? + $locale->text('Edit Quotation') : + $locale->text('Add Quotation'); + $form->{heading} = $locale->text('Quotation'); + $form->{vc} = 'customer'; } + $lxdebug->leave_sub(); +} + +sub add { + $lxdebug->enter_sub(); + + set_headings("add"); + $form->{callback} = "$form->{script}?action=add&type=$form->{type}&vc=$form->{vc}&login=$form->{login}&path=$form->{path}&password=$form->{password}" unless $form->{callback}; @@ -77,6 +111,10 @@ sub add { sub edit { $lxdebug->enter_sub(); + $form->{simple_save} = 0; + + set_headings("edit"); + # editing without stuff to edit? try adding it first if ($form->{rowcount}) { map { $id++ if $form->{"id_$_"} } (1 .. $form->{rowcount}); @@ -94,29 +132,21 @@ sub edit { } } - if ($form->{type} eq 'purchase_order') { - $form->{title} = $locale->text('Edit Purchase Order'); - $form->{heading} = $locale->text('Purchase Order'); - $form->{vc} = 'vendor'; - } - if ($form->{type} eq 'sales_order') { - $form->{title} = $locale->text('Edit Sales Order'); - $form->{heading} = $locale->text('Sales Order'); - $form->{vc} = 'customer'; - } - if ($form->{type} eq 'request_quotation') { - $form->{title} = $locale->text('Edit Request for Quotation'); - $form->{heading} = $locale->text('Request for Quotation'); - $form->{vc} = 'vendor'; - } - if ($form->{type} eq 'sales_quotation') { - $form->{title} = $locale->text('Edit Quotation'); - $form->{heading} = $locale->text('Quotation'); - $form->{vc} = 'customer'; + if ($form->{print_and_save}) { + $form->{action} = "print"; + $form->{resubmit} = 1; + $language_id = $form->{language_id}; + $printer_id = $form->{printer_id}; } + set_headings("edit"); + &order_links; &prepare_order; + if ($form->{print_and_save}) { + $form->{language_id} = $language_id; + $form->{printer_id} = $printer_id; + } &display_form; $lxdebug->leave_sub(); @@ -131,12 +161,22 @@ sub order_links { # retrieve order/quotation $form->{webdav} = $webdav; - # set jscalendar $form->{jscalendar} = $jscalendar; OE->retrieve(\%myconfig, \%$form); + 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 multiple rowcounts (== collective order) then check if the # there were more than one customer (in that case OE::retrieve removes # the content from the field) @@ -167,12 +207,32 @@ sub order_links { # get customer / vendor if ($form->{type} =~ /(purchase_order|request_quotation|receive_order)/) { IR->get_vendor(\%myconfig, \%$form); + + #quote all_vendor Bug 133 + foreach $ref (@{ $form->{all_vendor} }) { + $ref->{name} = $form->quote($ref->{name}); + } + } if ($form->{type} =~ /(sales|ship)_(order|quotation)/) { IS->get_customer(\%myconfig, \%$form); + + #quote all_vendor Bug 133 + foreach $ref (@{ $form->{all_customer} }) { + $ref->{name} = $form->quote($ref->{name}); + } + } $form->{cp_id} = $cp_id; - + if ($payment_id) { + $form->{payment_id} = $payment_id; + } + if ($language_id) { + $form->{language_id} = $language_id; + } + if ($taxzone_id) { + $form->{taxzone_id} = $taxzone_id; + } $form->{intnotes} = $intnotes; ($form->{ $form->{vc} }) = split /--/, $form->{ $form->{vc} }; $form->{"old$form->{vc}"} = @@ -187,7 +247,7 @@ sub order_links { } # currencies - @curr = split /:/, $form->{currencies}; + @curr = split(/:/, $form->{currencies}); chomp $curr[0]; $form->{defaultcurrency} = $curr[0]; $form->{currency} = $form->{defaultcurrency} unless $form->{currency}; @@ -224,13 +284,11 @@ sub order_links { sub prepare_order { $lxdebug->enter_sub(); - $form->{format} = "pdf"; + $form->{format} = "pdf" unless ($form->{print_and_save} && $form->{format}); $form->{media} = "screen"; - $form->{formname} = $form->{type}; - - map { $form->{$_} =~ s/\"/"/g } - qw(ordnumber quonumber shippingpoint shipvia notes intnotes shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact); + $form->{formname} = $form->{type} unless $form->{formname}; + my $i = 0; foreach $ref (@{ $form->{form_details} }) { $form->{rowcount} = ++$i; @@ -274,10 +332,23 @@ sub form_header { $checkedopen = ($form->{closed}) ? "" : "checked"; $checkedclosed = ($form->{closed}) ? "checked" : ""; + map { $form->{$_} =~ s/\"/"/g } + qw(ordnumber quonumber shippingpoint shipvia notes intnotes shiptoname + shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact + shiptophone shiptofax shiptodepartment_1 shiptodepartment_2); + # use JavaScript Calendar or not $form->{jsscript} = $form->{jscalendar}; $jsscript = ""; + $payment = qq||; + foreach $item (@{ $form->{payment_terms} }) { + if ($form->{payment_id} eq $item->{id}) { + $payment .= qq||; + } else { + $payment .= qq||; + } + } if ($form->{jsscript}) { # with JavaScript Calendar @@ -324,29 +395,72 @@ sub form_header { } # set option selected - foreach $item ($form->{vc}, currency, department, employee, contact) { + foreach $item ($form->{vc}, currency, department, employee) { $form->{"select$item"} =~ s/ selected//; $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; } + #quote select[customer|vendor] Bug 133 + $form->{"select$form->{vc}"} = $form->quote($form->{"select$form->{vc}"}); + #build contacts if ($form->{all_contacts}) { - $form->{selectcontact} = ""; + $form->{selectcontact} = ""; foreach $item (@{ $form->{all_contacts} }) { + my $department = ($item->{cp_abteilung}) ? "--$item->{cp_abteilung}" : ""; if ($form->{cp_id} == $item->{cp_id}) { $form->{selectcontact} .= - ""; + } else { + $form->{selectcontact} .= ""; + } + } + } else { + $form->{selectcontact} =~ s/ selected//g; + if ($form->{cp_id} ne "") { + $form->{selectcontact} =~ s/value=$form->{cp_id}/value=$form->{cp_id} selected/; + } + } + + + if (@{ $form->{SHIPTO} }) { + $form->{selectshipto} = ""; + foreach $item (@{ $form->{SHIPTO} }) { + if ($item->{shipto_id} == $form->{shipto_id}) { + $form->{selectshipto} .= + ""; } else { - $form->{selectcontact} .= ""; } + + } + } else { + $form->{selectshipto} =~ s/ selected//g; + if ($form->{shipto_id} ne "") { + $form->{selectshipto} =~ s/value=$form->{shipto_id}/value=$form->{shipto_id} selected/; } } + $shipto = qq| + | . $locale->text('Shipping Address') . qq| + + |; + + + + $form->{exchangerate} = $form->format_amount(\%myconfig, $form->{exchangerate}); + if (($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}) { + $creditwarning = 1; + } else { + $creditwarning = 0; + } + $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0"); $form->{creditremaining} = @@ -354,7 +468,7 @@ sub form_header { $contact = ($form->{selectcontact}) - ? qq|\n| + ? qq|\n| : qq||; $exchangerate = qq| @@ -401,6 +515,53 @@ sub form_header { |; } + if ($form->{max_dunning_level}) { + $dunning = qq| + + + + + + + + + +
| . $locale->text('Max. Dunning Level') . qq|:$form->{max_dunning_level}| . $locale->text('Dunning Amount') . qq|:| + . $form->format_amount(\%myconfig, $form->{dunning_amount},2) + . qq|
+ + +|; + } + + if (@{ $form->{TAXZONE} }) { + $form->{selecttaxzone} = ""; + foreach $item (@{ $form->{TAXZONE} }) { + if ($item->{id} == $form->{taxzone_id}) { + $form->{selecttaxzone} .= + ""; + } else { + $form->{selecttaxzone} .= + ""; + } + + } + } else { + $form->{selecttaxzone} =~ s/ selected//g; + if ($form->{taxzone_id} ne "") { + $form->{selecttaxzone} =~ s/value=$form->{taxzone_id}>/value=$form->{taxzone_id} selected>/; + } + } + + $taxzone = qq| + + | . $locale->text('Steuersatz') . qq| + + + |; + + if ($form->{type} !~ /_quotation$/) { $ordnumber = qq| @@ -444,6 +605,7 @@ sub form_header { + $shipto |; } else { @@ -482,7 +644,10 @@ sub form_header { $button2 |; - + $creditremaining = qq| + + $shipto + |; } $vc = @@ -526,20 +691,39 @@ sub form_header { |; } + if ($form->{resubmit} && ($form->{format} eq "html")) { + $onload = + qq|window.open('about:blank','Beleg'); document.oe.target = 'Beleg';document.oe.submit()|; + } elsif ($form->{resubmit}) { + $onload = qq|document.oe.submit()|; + } else { + $onload = "fokus()"; + } + + $credittext = $locale->text('Credit Limit exceeded!!!'); + if ($creditwarning) { + $onload = qq|alert('$credittext')|; + } $form->header; print qq| - + -
{script}> +{script}> + + + + {id}> +{action}> {type}> {formname}> {media}> {format}> +{proforma}> @@ -579,6 +763,8 @@ sub form_header { $creditremaining $business + $dunning + $taxzone $department | . $locale->text('Currency') . qq| @@ -594,8 +780,28 @@ sub form_header { | . $locale->text('Ship via') . qq| - - + |; +# +# +# +# +# +# +# +# +# +# +# +#
+# +# +#
+# +# +#
+# +# +print qq| @@ -622,6 +828,8 @@ $jsscript + + @@ -757,6 +965,9 @@ sub form_footer { + +
$notes $intnotes
| . $locale->text('Payment Terms') . qq|
@@ -823,7 +1034,7 @@ sub form_footer { -Bearbeiten des $form->{heading}
+| . $locale->text("Edit the $form->{type}") . qq|
+ |; - if ($form->{id}) { + if (($form->{id})) { print qq| -
Workflow $form->{heading}
+
| . $locale->text("Workflow $form->{type}") . qq|
|; - if ($form->{type} =~ /sales_quotation$/) { + if (($form->{type} =~ /sales_quotation$/)) { print qq| |; @@ -853,10 +1066,12 @@ Bearbeiten des $form->{heading}
|; } + if (1) { print qq| |; +} if ($form->{type} =~ /sales_order$/) { print qq| @@ -873,7 +1088,7 @@ Bearbeiten des $form->{heading}
+ . $locale->text('Request for Quotation') . qq|"> |; } else { @@ -883,7 +1098,7 @@ Bearbeiten des $form->{heading}
. $locale->text('Order') . qq|"> |; } - } elsif ($form->{type} =~ /sales_order$/ && $form->{rowcount}) { + } elsif ($form->{type} =~ /sales_order$/ && $form->{rowcount} && !$form->{proforma}) { print qq|
Workflow $form->{heading}
{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining); + $form->{update} = 1; &check_name($form->{vc}); @@ -948,7 +1166,7 @@ sub update { $form->{creditremaining} += ($form->{oldinvtotal} - $form->{oldtotalpaid}); &check_form; - } else { + } else { if ( $form->{type} eq 'purchase_order' || $form->{type} eq 'request_quotation') { @@ -974,11 +1192,16 @@ sub update { } else { $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - + if ($form->{"not_discountable_$i"}) { + $form->{"discount_$i"} = 0; + } map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit); map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; + if ($form->{"part_payment_id_$i"} ne "") { + $form->{payment_id} = $form->{"part_payment_id_$i"}; + } $s = ($sellprice) ? $sellprice : $form->{"sellprice_$i"}; @@ -1034,7 +1257,7 @@ sub update { $form->{rowcount}--; $form->{"discount_$i"} = ""; &display_form; - } else { + } else { $form->{"id_$i"} = 0; $form->{"unit_$i"} = $locale->text('ea'); @@ -1677,7 +1900,7 @@ sub subtotal { $lxdebug->leave_sub(); } -sub save { +sub save_and_close { $lxdebug->enter_sub(); if ($form->{type} =~ /_order$/) { @@ -1738,8 +1961,12 @@ sub save { } - $form->{$ordnumber} = $form->update_defaults(\%myconfig, $numberfld) - unless $form->{$ordnumber}; + # get new number in sequence if no number is given or if saveasnew was requested + if (!$form->{$ordnumber} || $form->{saveasnew}) { + $form->{$ordnumber} = $form->update_defaults(\%myconfig, $numberfld); + } + + relink_accounts(); $form->redirect( $form->{label} . " $form->{$ordnumber} " . $locale->text('saved!')) @@ -1749,6 +1976,82 @@ sub save { $lxdebug->leave_sub(); } +sub save { + $lxdebug->enter_sub(); + + if ($form->{type} =~ /_order$/) { + $form->isblank("transdate", $locale->text('Order Date missing!')); + } else { + $form->isblank("transdate", $locale->text('Quotation Date missing!')); + } + + $msg = ucfirst $form->{vc}; + $form->isblank($form->{vc}, $locale->text($msg . " missing!")); + + # $locale->text('Customer missing!'); + # $locale->text('Vendor missing!'); + + $form->isblank("exchangerate", $locale->text('Exchangerate missing!')) + if ($form->{currency} ne $form->{defaultcurrency}); + + &validate_items; + + # if the name changed get new values + if (&check_name($form->{vc})) { + &update; + exit; + } + + $form->{id} = 0 if $form->{saveasnew}; + + # this is for the internal notes section for the [email] Subject + if ($form->{type} =~ /_order$/) { + if ($form->{type} eq 'sales_order') { + $form->{label} = $locale->text('Sales Order'); + + $numberfld = "sonumber"; + $ordnumber = "ordnumber"; + } else { + $form->{label} = $locale->text('Purchase Order'); + + $numberfld = "ponumber"; + $ordnumber = "ordnumber"; + } + + $err = $locale->text('Cannot save order!'); + + } else { + if ($form->{type} eq 'sales_quotation') { + $form->{label} = $locale->text('Quotation'); + + $numberfld = "sqnumber"; + $ordnumber = "quonumber"; + } else { + $form->{label} = $locale->text('Request for Quotation'); + + $numberfld = "rfqnumber"; + $ordnumber = "quonumber"; + } + + $err = $locale->text('Cannot save quotation!'); + + } + + $form->{$ordnumber} = $form->update_defaults(\%myconfig, $numberfld) + unless $form->{$ordnumber}; + + relink_accounts(); + + OE->save(\%myconfig, \%$form); + $form->{simple_save} = 1; + if(!$form->{print_and_save}) { + set_headings("edit"); + &update; + exit; + } + $lxdebug->leave_sub(); +} + sub delete { $lxdebug->enter_sub(); @@ -1837,7 +2140,6 @@ sub invoice { exit; } - ($null, $form->{cp_id}) = split /--/, $form->{contact}; $form->{cp_id} *= 1; if ( $form->{type} =~ /_order/ @@ -1864,6 +2166,7 @@ sub invoice { # if not it's most likely a collective order, which can't be saved back # so they just have to be closed if (($form->{ordnumber} ne '') || ($form->{quonumber} ne '')) { + relink_accounts(); OE->save(\%myconfig, \%$form); } else { OE->close_orders(\%myconfig, \%$form); @@ -2088,6 +2391,8 @@ sub create_backorder { } qw(sellprice discount); } + relink_accounts(); + OE->save(\%myconfig, \%$form); # rebuild rows for invoice @@ -2116,7 +2421,7 @@ sub save_as_new { $form->{saveasnew} = 1; $form->{closed} = 0; - map { delete $form->{$_} } qw(printed emailed queued); + map { delete $form->{$_} } qw(printed emailed queued ordnumber quonumber); &save; @@ -2129,10 +2434,10 @@ sub purchase_order { if ( $form->{type} eq 'sales_quotation' || $form->{type} eq 'request_quotation') { $form->{closed} = 1; + relink_accounts(); OE->save(\%myconfig, \%$form); } - ($null, $form->{cp_id}) = split /--/, $form->{contact}; $form->{cp_id} *= 1; $form->{title} = $locale->text('Add Purchase Order'); @@ -2150,10 +2455,10 @@ sub sales_order { if ( $form->{type} eq 'sales_quotation' || $form->{type} eq 'request_quotation') { $form->{closed} = 1; + relink_accounts(); OE->save(\%myconfig, \%$form); } - ($null, $form->{cp_id}) = split /--/, $form->{contact}; $form->{cp_id} *= 1; $form->{title} = $locale->text('Add Sales Order'); @@ -2384,6 +2689,8 @@ sub display_ship_receive { + +