X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/9227f81db26d209ffab778bf9520798f6cbf7f0e..8e0f6e70:/SL/WH.pm diff --git a/SL/WH.pm b/SL/WH.pm index f363ae50e..af66e3bac 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -252,7 +252,7 @@ sub transfer_assembly { # 25.4.09 Antwort: Ja. Aber erst wenn im Frontend die locales-Funktion aufgerufen wird $kannNichtFertigen .= "Zum Fertigen fehlen: " . abs($partsQTY - $max_parts) . - " Einheiten der Ware: " . $self->get_part_description(parts_id => $currentPart_ID) . + " Einheiten der Ware: " . $self->get_part_description(parts_id => $currentPart_ID) . " im Lager: " . $warehouse_desc . ", um das Erzeugnis herzustellen.
"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen next; # die weiteren Überprüfungen sind unnötig, daher das nächste elemente prüfen (genaue Ausgabe, was noch fehlt) @@ -1160,6 +1160,106 @@ An expiration date. Note that this is not by default used by C =back +=head2 create_assembly \%PARAMS, [ \%PARAMS, ... ] + +Creates an assembly if all defined items are available. + +Assembly item(s) will be stocked out and the assembly will be stocked in, +taking into account the qty and units which can be defined for each +assembly item seperately. + +The calling params originate from C but only parts_id with the +attribute assembly are processed. + +The typical params would be: + + my %TRANSFER = ( + 'login' => $::myconfig{login}, + 'dst_warehouse_id' => $form->{warehouse_id}, + 'dst_bin_id' => $form->{bin_id}, + 'chargenumber' => $form->{chargenumber}, + 'bestbefore' => $form->{bestbefore}, + 'assembly_id' => $form->{parts_id}, + 'qty' => $form->{qty}, + 'comment' => $form->{comment} + ); + +=head3 Prerequisites + +All of these prerequisites have to be trueish, otherwise the function will exit +unsuccessfully with a return value of undef. + +=over 4 + +=item Mandantory params + + assembly_id, qty, login, dst_warehouse_id and dst_bin_id are mandatory. + +=item Subset named 'Assembly' of data set 'Part' + + assembly_id has to be an id in the table parts with the valid subset assembly. + +=item Assembly is composed of assembly item(s) + + There has to be at least one data set in the table assembly referenced to this assembly_id. + +=item Assembly cannot be destroyed or disassembled + + Assemblies are like cakes. You cannot disassemble it. NEVER. + No negative nor zero qty's are valid inputs. + +=item The assembly item(s) have to be in the same warehouse + + inventory.warehouse_id equals dst_warehouse_id (client configurable). + +=item The assembly item(s) have to be in stock with the qty needed + + I can only make a cake by receipt if I have ALL ingredients and + in the needed stock amount. + The qty of stocked in assembly item(s) has to fit into the + number of the qty of the assemblies, which are going to be created (client configurable). + +=item assembly item(s) with the parts set 'service' are ignored + + The subset 'Services' of part will not transferred for assembly item(s). + +=back + +Client configurable prerequisites can be changed with different +prerequisites as described in client_config (s.a. next chapter). + + +=head2 default creation of assembly + +The valid state of the assembly item(s) used for the assembly process are +'out' for the general direction and 'used' as the specific reason. +The valid state of the assembly is 'in' for the direction and 'assembled' +as the specific reason. + +The method is transaction safe, in case of errors not a single entry will be made +in inventory. + +Two prerequisites can be changed with this global parameters + +=over 2 + +=item $::instance_conf->get_transfer_default_warehouse_for_assembly + + If trueish we try to get all the items form the default bins defined in parts + and do not try to find them in the destination warehouse. Returns an + error if not all items have set a default bin in parts. + +=item $::instance_conf->get_bin_id_ignore_onhand + + If trueish we can create assemblies even if we do not have enough items in stock. + The needed qty will be booked in a special bin, which has to be configured in + the client config. + +=back + + + + =head1 BUGS None yet.