]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DO.pm
prepare_parts_for_printing: weight nicht hier in TEMPLATE_ARRAYS eintragen, …
[mfinanz.git] / SL / DO.pm
index 7659ffe607737c4f52d4552b13030d1721ba7e8e..e764ac6c3351639e50ca58bc769502b522d1bfba 100644 (file)
--- a/SL/DO.pm
+++ b/SL/DO.pm
@@ -67,9 +67,10 @@ sub transactions {
   my $query =
     qq|SELECT dord.id, dord.donumber, dord.ordnumber, dord.cusordnumber,
          dord.transdate, dord.reqdate,
-         ct.${vc}number, ct.name, dord.${vc}_id, dord.globalproject_id,
+         ct.${vc}number, ct.name, ct.business_id,
+         dord.${vc}_id, dord.globalproject_id,
          dord.closed, dord.delivered, dord.shippingpoint, dord.shipvia,
-         dord.transaction_description,
+         dord.transaction_description, dord.itime::DATE AS insertdate,
          pr.projectnumber AS globalprojectnumber,
          dep.description AS department,
          e.name AS employee,
@@ -98,6 +99,11 @@ sub transactions {
     push @values, conv_i($form->{project_id}), conv_i($form->{project_id});
   }
 
+  if ($form->{"business_id"}) {
+    push @where,  qq|ct.business_id = ?|;
+    push @values, conv_i($form->{"business_id"});
+  }
+
   if ($form->{"${vc}_id"}) {
     push @where,  qq|dord.${vc}_id = ?|;
     push @values, $form->{"${vc}_id"};
@@ -119,7 +125,7 @@ sub transactions {
   }
   if (!$main::auth->assert('sales_all_edit', 1)) {
     push @where, qq|dord.employee_id = (select id from employee where login= ?)|;
-    push @values, $form->{login};
+    push @values, $::myconfig{login};
   }
 
   foreach my $item (qw(donumber ordnumber cusordnumber transaction_description)) {
@@ -163,6 +169,16 @@ sub transactions {
     push @values, conv_date($form->{reqdateto});
   }
 
+  if($form->{insertdatefrom}) {
+    push @where, qq|dord.itime::DATE >= ?|;
+    push@values, conv_date($form->{insertdatefrom});
+  }
+
+  if($form->{insertdateto}) {
+    push @where, qq|dord.itime::DATE <= ?|;
+    push @values, conv_date($form->{insertdateto});
+  }
+
   if (@where) {
     $query .= " WHERE " . join(" AND ", map { "($_)" } @where);
   }
@@ -179,6 +195,7 @@ sub transactions {
     "shipvia"                 => "dord.shipvia",
     "transaction_description" => "dord.transaction_description",
     "department"              => "lower(dep.description)",
+    "insertdate"              => "dord.itime",
   );
 
   my $sortdir   = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC';
@@ -296,9 +313,14 @@ SQL
   for my $i (1 .. $form->{rowcount}) {
     next if (!$form->{"id_$i"});
 
+    CVar->get_non_editable_ic_cvars(form               => $form,
+                                    dbh                => $dbh,
+                                    row                => $i,
+                                    sub_module         => 'delivery_order_items',
+                                    may_converted_from => ['orderitems', 'delivery_order_items']);
+
     my $position = $i;
 
-    my $cvars;
     if (!$form->{"delivery_order_items_id_$i"}) {
       # there is no persistent id, therefore create one with all necessary constraints
       my $q_item_id = qq|SELECT nextval('delivery_order_items_id')|;
@@ -309,22 +331,7 @@ SQL
       do_query($form, $dbh, $query, conv_i($form->{"delivery_order_items_id_$i"}),
                 conv_i($form->{"id"}), conv_i($position), conv_i($form->{"id_$i"}));
       $h_item_id->finish();
-
-      # get values for CVars from master data for new items
-      $cvars = CVar->get_custom_variables(dbh      => $dbh,
-                                          module   => 'IC',
-                                          trans_id => $form->{"id_$i"},
-                                         );
-    } else {
-      # get values for CVars from custom_variables for existing items
-      $cvars = CVar->get_custom_variables(dbh        => $dbh,
-                                          module     => 'IC',
-                                          sub_module => 'delivery_order_items',
-                                          trans_id   => $form->{"delivery_order_items_id_$i"},
-                                         );
     }
-    # map only non-editable CVars to form (editable ones are already there)
-    map { $form->{"ic_cvar_$_->{name}_$i"} = $_->{value} unless $_->{flag_editable} } @{ $cvars };
 
     $form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"});
 
@@ -387,6 +394,8 @@ SQL
                   conv_i($form->{"delivery_order_items_id_$i"}), $sinfo->{qty}, $sinfo->{unit}, conv_i($sinfo->{warehouse_id}),
                   conv_i($sinfo->{bin_id}));
        $h_item_stock_id->finish();
+      # write back the id to the form (important if only transfer was clicked (id fk for invoice)
+      $form->{"stock_${in_out}_$i"} = YAML::Dump($stock_info);
       }
       @values = ($form->{"delivery_order_items_id_$i"}, $sinfo->{qty}, $sinfo->{unit}, conv_i($sinfo->{warehouse_id}),
                  conv_i($sinfo->{bin_id}), $sinfo->{chargenumber}, conv_date($sinfo->{bestbefore}),
@@ -403,8 +412,9 @@ SQL
                                 name_prefix  => 'ic_',
                                 name_postfix => "_$i",
                                 dbh          => $dbh);
-    # link order items with doi
-    if ($form->{"converted_from_orderitems_id_$i"}) {
+
+    # link order items with doi, for future extension look at foreach IS.pm
+    if (!$form->{saveasnew} && $form->{"converted_from_orderitems_id_$i"}) {
       RecordLinks->create_links('dbh'        => $dbh,
                                 'mode'       => 'ids',
                                 'from_table' => 'orderitems',
@@ -412,8 +422,8 @@ SQL
                                 'to_table'   => 'delivery_order_items',
                                 'to_id'      =>  $form->{"delivery_order_items_id_$i"},
       );
-      delete $form->{"converted_from_orderitems_id_$i"};
     }
+    delete $form->{"converted_from_orderitems_id_$i"};
   }
 
   # 1. search for orphaned dois; processed_dois may be empty (no transfer) TODO: be supersafe and alter same statement for doi and oi
@@ -458,7 +468,7 @@ SQL
              $form->{cusordnumber}, conv_date($form->{transdate}),
              conv_i($form->{vendor_id}), conv_i($form->{customer_id}),
              conv_date($form->{reqdate}), $form->{shippingpoint}, $form->{shipvia},
-             $form->{notes}, $form->{intnotes},
+             $restricter->process($form->{notes}), $form->{intnotes},
              $form->{closed} ? 't' : 'f', $form->{delivered} ? "t" : "f",
              conv_i($form->{department_id}), conv_i($form->{language_id}), conv_i($form->{shipto_id}),
              conv_i($form->{globalproject_id}), conv_i($form->{employee_id}),
@@ -680,7 +690,7 @@ sub retrieve {
          dord.shipto_id,
          dord.globalproject_id, dord.delivered, dord.transaction_description,
          dord.taxzone_id, dord.taxincluded, dord.terms, (SELECT cu.name FROM currencies cu WHERE cu.id=dord.currency_id) AS currency,
-         dord.delivery_term_id
+         dord.delivery_term_id, dord.itime::DATE AS insertdate
        FROM delivery_orders dord
        JOIN ${vc} cv ON (dord.${vc}_id = cv.id)
        LEFT JOIN employee e ON (dord.employee_id = e.id)
@@ -1013,23 +1023,11 @@ sub order_details {
       }
     }
 
-    my $cvars;
-    if (! $form->{"delivery_order_items_id_$i"}) {
-      # get values for CVars from master data for new items
-      $cvars = CVar->get_custom_variables(dbh      => $dbh,
-                                          module   => 'IC',
-                                          trans_id => $form->{"id_$i"},
-                                         );
-    } else {
-      # get values for CVars from custom_variables for existing items
-      $cvars = CVar->get_custom_variables(dbh        => $dbh,
-                                          module     => 'IC',
-                                          sub_module => 'delivery_order_items',
-                                          trans_id   => $form->{"delivery_order_items_id_$i"},
-                                         );
-    }
-    # map only non-editable CVars to form (editable ones are already there)
-    map { $form->{"ic_cvar_$_->{name}_$i"} = $_->{value} unless $_->{flag_editable} } @{ $cvars };
+    CVar->get_non_editable_ic_cvars(form               => $form,
+                                    dbh                => $dbh,
+                                    row                => $i,
+                                    sub_module         => 'delivery_order_items',
+                                    may_converted_from => ['orderitems', 'delivery_order_items']);
 
     push @{ $form->{TEMPLATE_ARRAYS}->{"ic_cvar_$_->{name}"} },
       CVar->format_to_template(CVar->parse($form->{"ic_cvar_$_->{name}_$i"}, $_), $_)
@@ -1197,17 +1195,19 @@ sub transfer_in_out {
 
   foreach my $request (@{ $params{requests} }) {
     push @transfers, {
-      'parts_id'               => $request->{parts_id},
-      "${prefix}_warehouse_id" => $request->{warehouse_id},
-      "${prefix}_bin_id"       => $request->{bin_id},
-      'chargenumber'           => $request->{chargenumber},
-      'bestbefore'             => $request->{bestbefore},
-      'qty'                    => $request->{qty},
-      'unit'                   => $request->{unit},
-      'oe_id'                  => $form->{id},
-      'shippingdate'           => 'current_date',
-      'transfer_type'          => $params{direction} eq 'in' ? 'stock' : 'shipped',
-      'project_id'             => $request->{project_id},
+      'parts_id'                      => $request->{parts_id},
+      "${prefix}_warehouse_id"        => $request->{warehouse_id},
+      "${prefix}_bin_id"              => $request->{bin_id},
+      'chargenumber'                  => $request->{chargenumber},
+      'bestbefore'                    => $request->{bestbefore},
+      'qty'                           => $request->{qty},
+      'unit'                          => $request->{unit},
+      'oe_id'                         => $form->{id},
+      'shippingdate'                  => 'current_date',
+      'transfer_type'                 => $params{direction} eq 'in' ? 'stock' : 'shipped',
+      'project_id'                    => $request->{project_id},
+      'delivery_order_items_stock_id' => $request->{delivery_order_items_stock_id},
+      'comment'                       => $request->{comment},
     };
   }
 
@@ -1286,5 +1286,4 @@ sub is_marked_as_delivered {
   return $delivered ? 1 : 0;
 }
 
-
 1;