X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/3da73190b8f201bfb33e3b6d96bbc6330142e922..b98b8e3f73a399d2d4df7be4962b56bd4ad8c82b:/bin/mozilla/oe.pl
diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl
index 2d82b9d17..59b5c6206 100644
--- a/bin/mozilla/oe.pl
+++ b/bin/mozilla/oe.pl
@@ -44,7 +44,7 @@ use SL::IS;
use SL::MoreCommon qw(ary_diff);
use SL::PE;
use SL::ReportGenerator;
-use List::MoreUtils qw(any none);
+use List::MoreUtils qw(uniq any none);
use List::Util qw(min max reduce sum);
use Data::Dumper;
@@ -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};
@@ -257,7 +257,6 @@ sub order_links {
$form->{"$form->{vc}_id"} ||= $form->{"all_$form->{vc}"}->[0]->{id} if $form->{"all_$form->{vc}"};
$form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes shipto_id delivery_term_id currency));
- $form->{shipto} = 1 if $form->{id} || $form->{convert_from_oe_ids};
# get customer / vendor
IR->get_vendor(\%myconfig, \%$form) if $form->{type} =~ /(purchase_order|request_quotation)/;
@@ -344,19 +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;
- # project ids
- my @old_project_ids = ($form->{"globalproject_id"}, grep { $_ } map { $form->{"project_id_$_"} } 1..$form->{"rowcount"});
-
my $vc = $form->{vc} eq "customer" ? "customers" : "vendors";
- $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
- "all" => 0,
- "old_id" => \@old_project_ids },
- "taxzones" => "ALL_TAXZONES",
+
+ $form->get_lists("taxzones" => ($form->{id} ? "ALL_TAXZONES" : "ALL_ACTIVE_TAXZONES"),
"payments" => "ALL_PAYMENTS",
"currencies" => "ALL_CURRENCIES",
"departments" => "ALL_DEPARTMENTS",
@@ -364,6 +358,25 @@ sub form_header {
limit => $myconfig{vclimit} + 1 },
"price_factors" => "ALL_PRICE_FACTORS");
+ # Projects
+ my @old_project_ids = uniq grep { $_ } map { $_ * 1 } ($form->{"globalproject_id"}, map { $form->{"project_id_$_"} } 1..$form->{"rowcount"});
+ my @old_ids_cond = @old_project_ids ? (id => \@old_project_ids) : ();
+ my @customer_cond;
+ if (($vc eq 'customers') && $::instance_conf->get_customer_projects_only_in_sales) {
+ @customer_cond = (
+ or => [
+ customer_id => $::form->{customer_id},
+ billable_customer_id => $::form->{customer_id},
+ ]);
+ }
+ my @conditions = (
+ or => [
+ and => [ active => 1, @customer_cond ],
+ @old_ids_cond,
+ ]);
+
+ $TMPL_VAR{ALL_PROJECTS} = SL::DB::Manager::Project->get_all(query => \@conditions);
+
# label subs
my $employee_list_query_gen = sub { $::form->{$_[0]} ? [ or => [ id => $::form->{$_[0]}, deleted => 0 ] ] : [ deleted => 0 ] };
$TMPL_VAR{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => $employee_list_query_gen->('employee_id'));
@@ -551,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}"),
@@ -868,7 +884,7 @@ sub orders {
push @hidden_variables, "l_subtotal", $form->{vc}, qw(l_closed l_notdelivered open closed delivered notdelivered ordnumber quonumber cusordnumber
transaction_description transdatefrom transdateto type vc employee_id salesman_id
reqdatefrom reqdateto projectnumber project_id periodic_invoices_active periodic_invoices_inactive
- business_id shippingpoint taxzone_id
+ business_id shippingpoint taxzone_id reqdate_unset_or_old
order_probability_op order_probability_value expected_billing_date_from expected_billing_date_to);
my @keys_for_url = grep { $form->{$_} } @hidden_variables;
@@ -933,6 +949,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};
@@ -954,6 +971,7 @@ sub orders {
push @options, $locale->text('Delivery Order created') if $form->{delivered};
push @options, $locale->text('Not delivered') if $form->{notdelivered};
push @options, $locale->text('Periodic invoices active') if $form->{periodic_invoices_active};
+ push @options, $locale->text('Reqdate not set or before current month') if $form->{reqdate_unset_or_old};
if ($form->{business_id}) {
my $vc_type_label = $form->{vc} eq 'customer' ? $locale->text('Customer type') : $locale->text('Vendor type');
@@ -1413,7 +1431,6 @@ sub invoice {
$form->{convert_from_oe_ids} = $form->{id};
$form->{transdate} = $form->{invdate} = $form->current_date(\%myconfig);
$form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1);
- $form->{shipto} = 1;
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
delete @{$form}{qw(id closed)};
@@ -1616,6 +1633,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';
@@ -1646,7 +1667,6 @@ sub check_for_direct_delivery_yes {
$form->{direct_delivery_checked} = 1;
delete @{$form}{grep /^shipto/, keys %{ $form }};
map { s/^CFDD_//; $form->{$_} = $form->{"CFDD_${_}"} } grep /^CFDD_/, keys %{ $form };
- $form->{shipto} = 1;
$form->{CFDD_shipto} = 1;
purchase_order();
$main::lxdebug->leave_sub();
@@ -1716,6 +1736,8 @@ sub purchase_order {
if ($form->{type} =~ /^sales_/) {
delete($form->{ordnumber});
+ delete($form->{payment_id});
+ delete($form->{delivery_term_id});
}
$form->{cp_id} *= 1;
@@ -1745,6 +1767,7 @@ sub sales_order {
if ($form->{type} eq "purchase_order") {
delete($form->{ordnumber});
+ $form->{"lastcost_$_"} = $form->{"sellprice_$_"} for (1..$form->{rowcount});
}
$form->{cp_id} *= 1;
@@ -2059,6 +2082,24 @@ 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)) {