X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/fa7fc7eeb3ca718914affee06c0629a08d571288..b720e272:/bin/mozilla/oe.pl diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 9a8aea41e..904a4b9fe 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -240,7 +240,7 @@ sub order_links { # get customer/vendor $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); - # retrieve order/quotation + # retrieve order/quotation and webdav config $form->{webdav} = $::instance_conf->get_webdav; my $editing = $form->{id}; @@ -343,15 +343,14 @@ sub form_header { # openclosed checkboxes my @tmp; push @tmp, sprintf qq||, - $form->{"delivered"} ? "checked" : "", $locale->text('Delivery Order created') if $form->{"type"} =~ /_order$/; + $form->{"delivered"} ? "checked" : "", $locale->text('Delivery Order(s) for full qty created') if $form->{"type"} =~ /_order$/; push @tmp, sprintf qq||, $form->{"closed"} ? "checked" : "", $locale->text('Closed') if $form->{id}; $TMPL_VAR{openclosed} = sprintf qq|%s\n|, 2 * scalar @tmp, join "\n", @tmp if @tmp; my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; - # project ids - $form->get_lists("taxzones" => "ALL_TAXZONES", + $form->get_lists("taxzones" => ($form->{id} ? "ALL_TAXZONES" : "ALL_ACTIVE_TAXZONES"), "payments" => "ALL_PAYMENTS", "currencies" => "ALL_CURRENCIES", "departments" => "ALL_DEPARTMENTS", @@ -376,7 +375,7 @@ sub form_header { @old_ids_cond, ]); - $TMPL_VAR{ALL_PROJECTS} = SL::DB::Manager::Project->get_all(query => \@conditions); + $TMPL_VAR{ALL_PROJECTS} = SL::DB::Manager::Project->get_all_sorted(query => \@conditions); # label subs my $employee_list_query_gen = sub { $::form->{$_[0]} ? [ or => [ id => $::form->{$_[0]}, deleted => 0 ] ] : [ deleted => 0 ] }; @@ -466,7 +465,7 @@ sub form_header { } } - $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase show_form_details show_history show_vc_details ckeditor/ckeditor ckeditor/adapters/jquery)); + $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase show_form_details show_history show_vc_details ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part)); $form->header; if ($form->{CFDD_shipto} && $form->{CFDD_shipto_id} ) { @@ -565,9 +564,12 @@ sub form_footer { $TMPL_VAR{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); + my $tpca_reminder; + $tpca_reminder = check_transport_cost_reminder_article_number() if $::instance_conf->get_transport_cost_reminder_article_number_id; print $form->parse_html_template("oe/form_footer", { %TMPL_VAR, webdav => $::instance_conf->get_webdav, + tpca_reminder => $tpca_reminder, print_options => print_options(inline => 1), label_edit => $locale->text("Edit the $form->{type}"), label_workflow => $locale->text("Workflow $form->{type}"), @@ -676,7 +678,20 @@ sub update { if ($sellprice) { $form->{"sellprice_$i"} = $sellprice; } else { - $form->{"sellprice_$i"} *= (1 - $form->{tradediscount}); + my $record = _make_record(); + my $price_source = SL::PriceSource->new(record_item => $record->items->[$i-1], record => $record); + my $best_price = $price_source->best_price; + my $best_discount = $price_source->best_discount; + + if ($best_price) { + $::form->{"sellprice_$i"} = $best_price->price; + $::form->{"active_price_source_$i"} = $best_price->source; + } + if ($best_discount) { + $::form->{"discount_$i"} = $best_discount->discount; + $::form->{"active_discount_source_$i"} = $best_discount->source; + } + $form->{"sellprice_$i"} /= $exchangerate; # if there is an exchange rate adjust sellprice } @@ -690,12 +705,6 @@ sub update { $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); - - # get pricegroups for parts - IS->get_pricegroups_for_parts(\%myconfig, \%$form); - - # build up html code for prices_$i - &set_pricegroup($i); } display_form(); @@ -947,6 +956,7 @@ sub orders { push @options, $locale->text('Customer') . " : $form->{customer}" if $form->{customer}; push @options, $locale->text('Vendor') . " : $form->{vendor}" if $form->{vendor}; + push @options, $locale->text('Contact Person') . " : $form->{cp_name}" if $form->{cp_name}; push @options, $locale->text('Department') . " : $department" if $form->{department}; push @options, $locale->text('Order Number') . " : $form->{ordnumber}" if $form->{ordnumber}; push @options, $locale->text('Customer Order Number') . " : $form->{cusordnumber}" if $form->{cusordnumber}; @@ -1341,9 +1351,14 @@ sub delete { if (OE->delete(\%myconfig, \%$form)){ # saving the history if(!exists $form->{addition}) { - $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; - $form->{addition} = "DELETED"; - $form->save_history; + if ( $form->{formname} eq 'sales_quotation' or $form->{formname} eq 'request_quotation' ) { + $form->{snumbers} = qq|quonumber_| . $form->{quonumber}; + } elsif ( $form->{formname} eq 'sales_order' or $form->{formname} eq 'purchase_order') { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; + }; + $form->{what_done} = $form->{formname}; + $form->{addition} = "DELETED"; + $form->save_history; } # /saving the history $form->info($msg); @@ -1457,6 +1472,7 @@ sub invoice { # bo creates the id, reset it map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued); + delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; $form->{ $form->{vc} } =~ s/--.*//g; $form->{type} = "invoice"; @@ -1502,10 +1518,6 @@ sub invoice { $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); } - # show pricegroup in newly loaded invoice when creating invoice from quotation/order - IS->get_pricegroups_for_parts(\%myconfig, \%$form); - set_pricegroup($_) for 1 .. $form->{rowcount}; - &display_form; $main::lxdebug->leave_sub(); @@ -1609,6 +1621,7 @@ sub save_as_new { $form->{saveasnew} = 1; map { delete $form->{$_} } qw(printed emailed queued delivered closed); + delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; # Let kivitendo assign a new order number if the user hasn't changed the # previous one. If it has been changed manually then use it as-is. @@ -1630,6 +1643,10 @@ sub save_as_new { my $wday = (localtime(time))[6]; my $next_workday = $wday == 5 ? 3 : $wday == 6 ? 2 : 1; + # if we have a client configured interval for sales quotation, we add this + $next_workday += $::instance_conf->get_reqdate_interval if ($::instance_conf->get_reqdate_interval && + $form->{type} eq 'sales_quotation' ); + my $query = 'SELECT date(current_date + interval \''. $next_workday .' days\') AS reqdate, date(current_date) AS transdate'; @@ -1729,6 +1746,8 @@ sub purchase_order { if ($form->{type} =~ /^sales_/) { delete($form->{ordnumber}); + delete($form->{payment_id}); + delete($form->{delivery_term_id}); } $form->{cp_id} *= 1; @@ -1801,6 +1820,7 @@ sub poso { # reset map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered ordnumber); + delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; # always reset orderitems_id # if purchase_order was generated from sales_order, use lastcost_$i as sellprice_$i # also reset discounts @@ -1872,6 +1892,7 @@ sub delivery_order { # reset delete @{$form}{qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal closed delivered)}; + delete $form->{"orderitems_id_$_"} for 1 .. $form->{"rowcount"}; for my $i (1 .. $form->{rowcount}) { map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice lastcost basefactor discount); @@ -2073,9 +2094,27 @@ sub _oe_remove_delivered_or_billed_rows { _remove_billed_or_delivered_rows(quantities => \%handled_base_qtys); } +# iterate all positions and match articlenumber +sub check_transport_cost_reminder_article_number { + $main::lxdebug->enter_sub(); + + my $form = $main::form; + + check_oe_access(); + + my $transport_article_id = $::instance_conf->get_transport_cost_reminder_article_number_id; + for my $i (1 .. $form->{rowcount}) { + return if $form->{"id_${i}"} eq $transport_article_id; + } + + # simply return the name of the part + return SL::DB::Part->new(id => $transport_article_id)->load()->partnumber; + + $main::lxdebug->leave_sub(); +} sub dispatcher { - foreach my $action (qw(delete delivery_order e_mail invoice print purchase_order purchase_order quotation - request_for_quotation sales_order sales_order save save_and_close save_as_new ship_to update)) { + foreach my $action (qw(delete delivery_order e_mail invoice print purchase_order quotation + request_for_quotation sales_order save save_and_close save_as_new ship_to update)) { if ($::form->{"action_${action}"}) { call_sub($action); return; @@ -2084,3 +2123,4 @@ sub dispatcher { $::form->error($::locale->text('No action defined.')); } +