Revision 566fcc06
Von Jan Büren vor mehr als 2 Jahren hinzugefügt
| SL/AP.pm | ||
|---|---|---|
|     $form->{exchangerate} = 1;
 | ||
|   } else {
 | ||
|     $exchangerate         = $form->check_exchangerate($myconfig, $form->{currency}, $form->{transdate}, 'sell');
 | ||
|     $form->{exchangerate} = $exchangerate || $form->parse_amount($myconfig, $form->{exchangerate});
 | ||
|     $form->{exchangerate} = $form->parse_amount($myconfig, $form->{exchangerate}, 5);
 | ||
|  | ||
|     # if default exchangerate is not defined, define one
 | ||
|     unless ($exchangerate) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate}, 0,  $form->{exchangerate});
 | ||
|       # delete records exchangerate -> if user sets new invdate for record
 | ||
|       $query = qq|UPDATE ap set exchangerate = NULL where id = ?|;
 | ||
|       do_query($form, $dbh, $query, $form->{"id"});
 | ||
|     }
 | ||
|     # update record exchangerate, if the default is set and differs from current
 | ||
|     if ($exchangerate && ($form->{exchangerate} != $exchangerate)) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate},
 | ||
|                                  0, $form->{exchangerate}, $form->{id}, 'ap');
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   # get the charts selected
 | ||
| ... | ... | |
|   # amount for total AP
 | ||
|   $form->{payables} = $form->{invtotal};
 | ||
|  | ||
|   # update exchangerate
 | ||
|   if (($form->{currency} ne $form->{defaultcurrency}) && !$exchangerate) {
 | ||
|     $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate}, 0,
 | ||
|                                $form->{exchangerate});
 | ||
|   }
 | ||
|  | ||
|   my ($query, $sth, @values);
 | ||
|  | ||
|   if (!$payments_only) {
 | ||
|     # if we have an id delete old records
 | ||
|     if ($form->{id}) {
 | ||
| SL/AR.pm | ||
|---|---|---|
|   my @values;
 | ||
|  | ||
|   my $dbh = $provided_dbh || SL::DB->client->dbh;
 | ||
|   $form->{defaultcurrency} = $form->get_default_currency($myconfig);
 | ||
|  | ||
|   # set exchangerate
 | ||
|   $form->{exchangerate} = ($form->{currency} eq $form->{defaultcurrency}) ? 1 :
 | ||
|       ( $form->check_exchangerate($myconfig, $form->{currency}, $form->{transdate}, 'buy') ||
 | ||
|         $form->parse_amount($myconfig, $form->{exchangerate}) );
 | ||
|   $form->{defaultcurrency} = $form->get_default_currency($myconfig);
 | ||
|   # check default or record exchangerate
 | ||
|   if ($form->{currency} eq $form->{defaultcurrency}) {
 | ||
|     $form->{exchangerate} = 1;
 | ||
|   } else {
 | ||
|     $exchangerate         = $form->check_exchangerate($myconfig, $form->{currency}, $form->{transdate}, 'buy');
 | ||
|     $form->{exchangerate} = $form->parse_amount($myconfig, $form->{exchangerate}, 5);
 | ||
|  | ||
|     # if default exchangerate is not defined, define one
 | ||
|     unless ($exchangerate) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate}, $form->{exchangerate}, 0);
 | ||
|       # delete records exchangerate -> if user sets new invdate for record
 | ||
|       $query = qq|UPDATE ar set exchangerate = NULL where id = ?|;
 | ||
|       do_query($form, $dbh, $query, $form->{"id"});
 | ||
|     }
 | ||
|     # update record exchangerate, if the default is set and differs from current
 | ||
|     if ($exchangerate && ($form->{exchangerate} != $exchangerate)) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate},
 | ||
|                                  $form->{exchangerate}, 0,  $form->{id}, 'ar');
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   # get the charts selected
 | ||
|   $form->{AR_amounts}{"amount_$_"} = $form->{"AR_amount_chart_id_$_"} for (1 .. $form->{rowcount});
 | ||
| ... | ... | |
|  | ||
|   $form->get_employee($dbh) unless $form->{employee_id};
 | ||
|  | ||
|   # if we have an id delete old records else make one
 | ||
|   if (!$payments_only) {
 | ||
|     if ($form->{id}) {
 | ||
|       # delete detail records
 | ||
|       $query = qq|DELETE FROM acc_trans WHERE trans_id = ?|;
 | ||
|       do_query($form, $dbh, $query, $form->{id});
 | ||
|  | ||
|     } else {
 | ||
|       $query = qq|SELECT nextval('glid')|;
 | ||
|       ($form->{id}) = selectrow_query($form, $dbh, $query);
 | ||
|       $query = qq|INSERT INTO ar (id, invnumber, employee_id, currency_id, taxzone_id) VALUES (?, 'dummy', ?, (SELECT id FROM currencies WHERE name=?), (SELECT taxzone_id FROM customer WHERE id = ?))|;
 | ||
|       do_query($form, $dbh, $query, $form->{id}, $form->{employee_id}, $form->{currency}, $form->{customer_id});
 | ||
|       if (!$form->{invnumber}) {
 | ||
|         my $trans_number   = SL::TransNumber->new(type => 'invoice', dbh => $dbh, number => $form->{partnumber}, id => $form->{id});
 | ||
|         $form->{invnumber} = $trans_number->create_unique;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   # amount for AR account
 | ||
|   $form->{receivables} = $form->round_amount($form->{amount}, 2) * -1;
 | ||
|  | ||
|   # update exchangerate
 | ||
|   $form->update_exchangerate($dbh, $form->{currency}, $form->{transdate}, $form->{exchangerate}, 0)
 | ||
|     if ($form->{currency} ne $form->{defaultcurrency}) && !$form->check_exchangerate($myconfig, $form->{currency}, $form->{transdate}, 'buy');
 | ||
|  | ||
|   if (!$payments_only) {
 | ||
|     $query =
 | ||
|       qq|UPDATE ar set
 | ||
| SL/IR.pm | ||
|---|---|---|
|       do_query($form, $dbh, qq|INSERT INTO ap (id, invnumber, currency_id, taxzone_id) VALUES (?, '', (SELECT id FROM currencies WHERE name=?), ?)|, $form->{id}, $form->{currency}, $form->{taxzone_id});
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   if ($form->{currency} eq $defaultcurrency) {
 | ||
|     $form->{exchangerate} = 1;
 | ||
|   } else {
 | ||
|     $exchangerate = $form->check_exchangerate($myconfig, $form->{currency}, $form->{invdate}, 'sell');
 | ||
|     $exchangerate         = $form->check_exchangerate($myconfig, $form->{currency}, $form->{invdate}, 'sell');
 | ||
|     $form->{exchangerate} = $form->parse_amount($myconfig, $form->{exchangerate}, 5);
 | ||
|  | ||
|     # if default exchangerate is not defined, define one
 | ||
|     unless ($exchangerate) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate}, 0,  $form->{exchangerate});
 | ||
|       # delete records exchangerate -> if user sets new invdate for record
 | ||
|       $query = qq|UPDATE ap set exchangerate = NULL where id = ?|;
 | ||
|       do_query($form, $dbh, $query, $form->{"id"});
 | ||
|     }
 | ||
|     # update record exchangerate, if the default is set and differs from current
 | ||
|     if ($exchangerate && ($form->{exchangerate} != $exchangerate)) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate},
 | ||
|                                  0, $form->{exchangerate}, $form->{id}, 'ap');
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   $form->{exchangerate} = $exchangerate || $form->parse_amount($myconfig, $form->{exchangerate});
 | ||
|   $form->{exchangerate} = 1 unless ($form->{exchangerate} * 1);
 | ||
|  | ||
|   my %item_units;
 | ||
|   my $q_item_unit = qq|SELECT unit FROM parts WHERE id = ?|;
 | ||
|   my $h_item_unit = prepare_query($form, $dbh, $q_item_unit);
 | ||
| ... | ... | |
|  | ||
|   $form->{paid} = $form->round_amount($form->{paid} * $form->{exchangerate} + $paiddiff, 2) if $form->{paid} != 0;
 | ||
|  | ||
| # update exchangerate
 | ||
|  | ||
|   $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate}, 0, $form->{exchangerate})
 | ||
|     if ($form->{currency} ne $defaultcurrency) && !$exchangerate;
 | ||
|  | ||
| # record acc_trans transactions
 | ||
|   # record acc_trans transactions
 | ||
|   my $taxdate = $form->{tax_point} || $form->{deliverydate} || $form->{invdate};
 | ||
|   foreach my $trans_id (keys %{ $form->{amount} }) {
 | ||
|     foreach my $accno (keys %{ $form->{amount}{$trans_id} }) {
 | ||
| SL/IS.pm | ||
|---|---|---|
|   if ($form->{currency} eq $defaultcurrency) {
 | ||
|     $form->{exchangerate} = 1;
 | ||
|   } else {
 | ||
|     $exchangerate = $form->check_exchangerate($myconfig, $form->{currency}, $form->{invdate}, 'buy');
 | ||
|     $exchangerate         = $form->check_exchangerate($myconfig, $form->{currency}, $form->{invdate}, 'buy');
 | ||
|     $form->{exchangerate} = $form->parse_amount($myconfig, $form->{exchangerate}, 5);
 | ||
|  | ||
|     # if default exchangerate is not defined, define one
 | ||
|     unless ($exchangerate) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate}, $form->{exchangerate}, 0);
 | ||
|       # delete records exchangerate -> if user sets new invdate for record
 | ||
|       $query = qq|UPDATE ar set exchangerate = NULL where id = ?|;
 | ||
|       do_query($form, $dbh, $query, $form->{"id"});
 | ||
|     }
 | ||
|     # update record exchangerate, if the default is set and differs from current
 | ||
|     if ($exchangerate && ($form->{exchangerate} != $exchangerate)) {
 | ||
|       $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate},
 | ||
|                                  $form->{exchangerate}, 0, $form->{id}, 'ar');
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   $form->{exchangerate} =
 | ||
|     ($exchangerate)
 | ||
|     ? $exchangerate
 | ||
|     : $form->parse_amount($myconfig, $form->{exchangerate});
 | ||
|  | ||
|   $form->{expense_inventory} = "";
 | ||
|  | ||
|   my %baseunits;
 | ||
| ... | ... | |
|   # reverse AR
 | ||
|   $form->{amount}{ $form->{id} }{ $form->{AR} } *= -1;
 | ||
|  | ||
|   # update exchangerate
 | ||
|   if (($form->{currency} ne $defaultcurrency) && !$exchangerate) {
 | ||
|     $form->update_exchangerate($dbh, $form->{currency}, $form->{invdate},
 | ||
|                                $form->{exchangerate}, 0);
 | ||
|   }
 | ||
|  | ||
|   $project_id = conv_i($form->{"globalproject_id"});
 | ||
|   # entsprechend auch beim Bestimmen des Steuerschlüssels in Taxkey.pm berücksichtigen
 | ||
|   my $taxdate = $form->{tax_point} ||$form->{deliverydate} || $form->{invdate};
 | ||
Auch abrufbar als: Unified diff
Beleg-Wechselkurs speichern, falls gesetzt und abweichend vom Tageskurs
Für alle 4 Buchungsmaske - Etwas zuviel in dem Commit, da die
form->id schon vorhanden sein muss und ich die Aufteilung an 2
Stellen von _post_invoice|post für das Holen und Setzen auf eine
reduzieren wollte.