package OE;
use List::Util qw(max first);
-use YAML;
use SL::AM;
use SL::Common;
use SL::TransNumber;
use SL::Util qw(trim);
use SL::DB;
+use SL::YAML;
use Text::ParseWords;
use strict;
qq| o.transaction_description, | .
qq| o.marge_total, o.marge_percent, | .
qq| o.itime::DATE AS insertdate, | .
+ qq| department.description as department, | .
qq| ex.$rate AS exchangerate, | .
qq| pt.description AS payment_terms, | .
qq| pr.projectnumber AS globalprojectnumber, | .
qq|LEFT JOIN project pr ON (o.globalproject_id = pr.id) | .
qq|LEFT JOIN payment_terms pt ON (pt.id = o.payment_id)| .
qq|LEFT JOIN tax_zones tz ON (o.taxzone_id = tz.id) | .
+ qq|LEFT JOIN department ON (o.department_id = department.id) | .
qq|$periodic_invoices_joins | .
qq|WHERE (o.quotation = ?) |;
push(@values, $quotation);
"insertdate" => "o.itime",
"taxzone" => "tz.description",
"payment_terms" => "pt.description",
+ "department" => "department.description",
);
if ($form->{sort} && grep($form->{sort}, keys(%allowed_sort_columns))) {
$sortorder = $allowed_sort_columns{$form->{sort}} . " ${sortdir}" . ", o.itime ${sortdir}";
return if !$params{oe_id};
- my $config = $params{config_yaml} ? YAML::Load($params{config_yaml}) : undef;
+ my $config = $params{config_yaml} ? SL::YAML::Load($params{config_yaml}) : undef;
return if 'HASH' ne ref $config;
my $obj = SL::DB::Manager::PeriodicInvoicesConfig->find_by(oe_id => $params{oe_id})
if ($config_obj) {
my $config = { map { $_ => $config_obj->$_ } qw(active terminated periodicity order_value_periodicity start_date_as_date end_date_as_date first_billing_date_as_date extend_automatically_by ar_chart_id
print printer_id copies direct_debit send_email email_recipient_contact_id email_recipient_address email_sender email_subject email_body) };
- $form->{periodic_invoices_config} = YAML::Dump($config);
+ $form->{periodic_invoices_config} = SL::YAML::Dump($config);
}
}
}
# get tax rates and description
my $accno_id = ($form->{vc} eq "customer") ? $ref->{income_accno} : $ref->{expense_accno};
$query =
- qq|SELECT c.accno, t.taxdescription, t.rate, t.taxnumber | .
- qq|FROM tax t LEFT JOIN chart c on (c.id = t.chart_id) | .
+ qq|SELECT c.accno, t.taxdescription, t.rate, c.accno as taxnumber | .
+ qq|FROM tax t | .
+ qq|LEFT JOIN chart c on (c.id = t.chart_id) | .
qq|WHERE t.id IN (SELECT tk.tax_id FROM taxkeys tk | .
qq| WHERE tk.chart_id = (SELECT id FROM chart WHERE accno = ?) | .
qq| AND startdate <= $transdate ORDER BY startdate DESC LIMIT 1) | .
push(@{ $form->{TEMPLATE_ARRAYS}->{taxrate_nofmt} }, $form->{"${item}_rate"} * 100);
push(@{ $form->{TEMPLATE_ARRAYS}->{taxnumber} }, $form->{"${item}_taxnumber"});
- my $tax_obj = SL::DB::Manager::Tax->find_by(taxnumber => $form->{"${item}_taxnumber"});
+ my $tax_objs = SL::DB::Manager::Tax->get_objects_from_sql(
+ sql => 'SELECT * from tax where chart_id = (SELECT id FROM chart WHERE accno = ?)',
+ args => [ $form->{"${item}_taxnumber"} ]
+ );
+ my $tax_obj;
+ if ( $tax_objs ) {
+ $tax_obj = $tax_objs->[0];
+ }
my $description = $tax_obj ? $tax_obj->translated_attribute('taxdescription', $form->{language_id}, 0) : '';
push(@{ $form->{TEMPLATE_ARRAYS}->{taxdescription} }, $description . q{ } . 100 * $form->{"${item}_rate"} . q{%});
}