Group nach Partsgroup (Warengruppe) umbenannt
[kivitendo-erp.git] / bin / mozilla / oe.pl
index 131f3f8..47d6f8f 100644 (file)
@@ -24,7 +24,8 @@
 # GNU General Public License for more details.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
 #======================================================================
 #
 # Order entry module
@@ -41,8 +42,7 @@ use SL::FU;
 use SL::OE;
 use SL::IR;
 use SL::IS;
-use SL::MoreCommon qw(ary_diff);
-use SL::PE;
+use SL::MoreCommon qw(ary_diff restore_form save_form);
 use SL::ReportGenerator;
 use List::MoreUtils qw(uniq any none);
 use List::Util qw(min max reduce sum);
@@ -425,7 +425,7 @@ sub form_header {
   # business
   $TMPL_VAR{business_label} = ($form->{vc} eq "customer" ? $locale->text('Customer type') : $locale->text('Vendor type'));
 
-  push @custom_hiddens, "customer_klass" if $form->{vc} eq 'customer';
+  push @custom_hiddens, "customer_pricegroup_id" if $form->{vc} eq 'customer';
 
   my $credittext = $locale->text('Credit Limit exceeded!!!');
 
@@ -434,7 +434,7 @@ sub form_header {
   $TMPL_VAR{follow_up_trans_info} =  ($form->{type} =~ /_quotation$/ ? $form->{quonumber} : $form->{ordnumber}) . " ($follow_up_vc)";
 
   if ($form->{id}) {
-    my $follow_ups = FU->follow_ups('trans_id' => $form->{id});
+    my $follow_ups = FU->follow_ups('trans_id' => $form->{id}, 'not_done' => 1);
 
     if (scalar @{ $follow_ups }) {
       $TMPL_VAR{num_follow_ups}     = scalar                    @{ $follow_ups };
@@ -560,10 +560,12 @@ sub form_footer {
     }
   }
 
+  my $grossamount = $form->{invtotal};
+  $form->{invtotal} = $form->round_amount( $form->{invtotal}, 2, 1);
   $form->{rounding} = $form->round_amount(
-    $form->round_amount($form->{invtotal}, 2, 1) - $form->round_amount($form->{invtotal}, 2)
+    $form->{invtotal} - $form->round_amount($grossamount, 2),
+    2
   );
-  $form->{invtotal} = $form->round_amount( $form->{invtotal}, 2, 1);
   $form->{oldinvtotal} = $form->{invtotal};
 
   $TMPL_VAR{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted();
@@ -651,7 +653,7 @@ sub update {
       if ($rows > 1) {
 
         select_item(mode => $mode, pre_entered_qty => $form->{"qty_$i"});
-        ::end_of_request();
+        $::dispatcher->end_request;
 
       } else {
 
@@ -906,7 +908,8 @@ sub orders {
                                                         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 reqdate_unset_or_old insertdatefrom insertdateto
-                                                        order_probability_op order_probability_value expected_billing_date_from expected_billing_date_to);
+                                                        order_probability_op order_probability_value expected_billing_date_from expected_billing_date_to
+                                                        parts_partnumber parts_description all department_id);
   push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables;
 
   my   @keys_for_url = grep { $form->{$_} } @hidden_variables;
@@ -983,12 +986,21 @@ sub orders {
   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};
+  if ($form->{department_id}) {
+    unless ($form->{department}) {
+      require SL::DB::Department;
+      my $department = SL::DB::Manager::Department->find_by(id => $::form->{department_id});
+      push @options, $locale->text('Department') . " : " . $department->description if $department;
+    }
+  }
   push @options, $locale->text('Order Number')            . " : $form->{ordnumber}"                       if $form->{ordnumber};
   push @options, $locale->text('Customer Order Number')   . " : $form->{cusordnumber}"                    if $form->{cusordnumber};
   push @options, $locale->text('Notes')                   . " : $form->{notes}"                           if $form->{notes};
   push @options, $locale->text('Transaction description') . " : $form->{transaction_description}"         if $form->{transaction_description};
   push @options, $locale->text('Quick Search')            . " : $form->{all}"                             if $form->{all};
   push @options, $locale->text('Shipping Point')          . " : $form->{shippingpoint}"                   if $form->{shippingpoint};
+  push @options, $locale->text('Part Description')        . " : $form->{parts_description}"               if $form->{parts_description};
+  push @options, $locale->text('Part Number')             . " : $form->{parts_partnumber}"                if $form->{parts_partnumber};
   if ( $form->{transdatefrom} or $form->{transdateto} ) {
     push @options, $locale->text('Order Date');
     push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1)     if $form->{transdatefrom};
@@ -1192,7 +1204,7 @@ sub save_and_close {
       $form->{payment_id} = $payment_id;
     }
     &update;
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
 
   $form->{id} = 0 if $form->{saveasnew};
@@ -1300,7 +1312,7 @@ sub save {
       $form->{payment_id} = $payment_id;
     }
     &update;
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
 
   $form->{id} = 0 if $form->{saveasnew};
@@ -1363,7 +1375,7 @@ sub save {
   if(!$form->{print_and_save}) {
     delete @{$form}{ary_diff([keys %{ $form }], [qw(login id script type cursor_fokus)])};
     edit();
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
   $main::lxdebug->leave_sub();
 }
@@ -1399,7 +1411,7 @@ sub delete {
     }
     # /saving the history
     $form->info($msg);
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
   $form->error($err);
 
@@ -1451,7 +1463,7 @@ sub invoice {
   if (&check_name($form->{vc})) {
     $form->{payment_id} = $payment_id if $form->{payment_id} eq "";
     &update;
-    ::end_of_request();
+    $::dispatcher->end_request;
   }
 
   _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'billed');
@@ -1459,7 +1471,7 @@ sub invoice {
   $form->{cp_id} *= 1;
 
   for my $i (1 .. $form->{rowcount}) {
-    for (qw(ship qty sellprice basefactor)) {
+    for (qw(ship qty sellprice basefactor discount)) {
       $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if $form->{"${_}_${i}"};
     }
     $form->{"converted_from_orderitems_id_$i"} = delete $form->{"orderitems_id_$i"};
@@ -1488,11 +1500,6 @@ sub invoice {
   delete @{$form}{qw(id closed)};
   $form->{rowcount}--;
 
-  if ($form->{type} =~ /_order$/) {
-    $form->{exchangerate} = $exchangerate;
-    &create_backorder;
-  }
-
   my ($script);
   if (   $form->{type} eq 'purchase_order'
       || $form->{type} eq 'request_quotation') {
@@ -1581,76 +1588,6 @@ sub save_exchangerate {
   $main::lxdebug->leave_sub();
 }
 
-sub create_backorder {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-
-  $form->{shipped} = 1;
-
-  # figure out if we need to create a backorder
-  # items aren't saved if qty != 0
-
-  my ($totalqty, $totalship);
-  for my $i (1 .. $form->{rowcount}) {
-    my $qty  = $form->{"qty_$i"};
-    my $ship = $form->{"ship_$i"};
-    $totalqty  += $qty;
-    $totalship += $ship;
-
-    $form->{"qty_$i"} = $qty - $ship;
-  }
-
-  if ($totalship == 0) {
-    map { $form->{"ship_$_"} = $form->{"qty_$_"} } (1 .. $form->{rowcount});
-    $form->{ordtotal} = 0;
-    $form->{shipped}  = 0;
-    return;
-  }
-
-  if ($totalqty == $totalship) {
-    map { $form->{"qty_$_"} = $form->{"ship_$_"} } (1 .. $form->{rowcount});
-    $form->{ordtotal} = 0;
-    return;
-  }
-
-  my @flds = (
-    qw(partnumber description qty ship unit sellprice discount id inventory_accno bin income_accno expense_accno listprice assembly taxaccounts partsgroup)
-  );
-
-  for my $i (1 .. $form->{rowcount}) {
-    map {
-      $form->{"${_}_$i"} =
-        $form->format_amount(\%myconfig, $form->{"${_}_$i"})
-    } qw(sellprice discount);
-  }
-
-  relink_accounts();
-
-  OE->save(\%myconfig, \%$form);
-
-  # rebuild rows for invoice
-  my @a     = ();
-  my $count = 0;
-
-  for my $i (1 .. $form->{rowcount}) {
-    $form->{"qty_$i"} = $form->{"ship_$i"};
-
-    if ($form->{"qty_$i"}) {
-      push @a, {};
-      my $j = $#a;
-      map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
-      $count++;
-    }
-  }
-
-  $form->redo_rows(\@flds, \@a, $count, $form->{rowcount});
-  $form->{rowcount} = $count;
-
-  $main::lxdebug->leave_sub();
-}
-
 sub save_as_new {
   $main::lxdebug->enter_sub();
 
@@ -1753,7 +1690,7 @@ sub check_for_direct_delivery {
 
   $main::lxdebug->leave_sub();
 
-  ::end_of_request();
+  $::dispatcher->end_request;
 }
 
 sub purchase_order {
@@ -2077,6 +2014,10 @@ sub edit_periodic_invoices_config {
   $::form->{AR}    = [ grep { $_->{link} =~ m/(?:^|:)AR(?::|$)/ } @{ $::form->{ALL_CHARTS} } ];
   $::form->{title} = $::locale->text('Edit the configuration for periodic invoices');
 
+  if ($::form->{customer_id}) {
+    $::form->{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all_sorted(where => [ cp_cv_id => $::form->{customer_id} ]);
+  }
+
   $::form->header(no_layout => 1);
   print $::form->parse_html_template('oe/edit_periodic_invoices_config', $config);
 
@@ -2105,6 +2046,12 @@ sub save_periodic_invoices_config {
                  copies                  => $::form->{copies} * 1 ? $::form->{copies} : 1,
                  extend_automatically_by => $::form->{extend_automatically_by} * 1 || undef,
                  ar_chart_id             => $::form->{ar_chart_id} * 1,
+                 send_email                 => $::form->{send_email} ? 1 : 0,
+                 email_recipient_contact_id => $::form->{email_recipient_contact_id} * 1 || undef,
+                 email_recipient_address    => $::form->{email_recipient_address},
+                 email_sender               => $::form->{email_sender},
+                 email_subject              => $::form->{email_subject},
+                 email_body                 => $::form->{email_body},
                };
 
   $::form->{periodic_invoices_config} = YAML::Dump($config);
@@ -2214,4 +2161,3 @@ sub dispatcher {
 
   $::form->error($::locale->text('No action defined.'));
 }
-