use SL::DBUtils;
use SL::DB::Invoice;
use SL::DB::PurchaseInvoice;
+use SL::DB;
use SL::Locale::String qw(t8);
use DateTime;
FROM ${arap}
LEFT JOIN ${vc} vc ON (${arap}.${vc}_id = vc.id)
- LEFT JOIN (SELECT sei.ap_id, SUM(sei.amount) AS amount
+ LEFT JOIN (SELECT sei.${arap}_id, SUM(sei.amount) + SUM(COALESCE(sei.skonto_amount,0)) AS amount
FROM sepa_export_items sei
LEFT JOIN sepa_export se ON (sei.sepa_export_id = se.id)
WHERE NOT se.closed
AND (se.vc = '${vc}')
- GROUP BY sei.ap_id)
- AS open_transfers ON (${arap}.id = open_transfers.ap_id)
+ GROUP BY sei.${arap}_id)
+ AS open_transfers ON (${arap}.id = open_transfers.${arap}_id)
LEFT JOIN payment_terms pt ON (${payment_term_type}.payment_id = pt.id)
}
sub create_export {
+ my ($self, %params) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_create_export, $self, %params);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _create_export {
my $self = shift;
my %params = @_;
my $vc = $params{vc} eq 'customer' ? 'customer' : 'vendor';
my $ARAP = uc $arap;
- my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+ my $dbh = $params{dbh} || SL::DB->client->dbh;
my ($export_id) = selectfirst_array_query($form, $dbh, qq|SELECT nextval('sepa_export_id_seq')|);
my $query =
$h_insert->finish();
$h_item_id->finish();
- $dbh->commit() unless ($params{dbh});
-
- $main::lxdebug->leave_sub();
-
return $export_id;
}
my $myconfig = \%main::myconfig;
my $form = $main::form;
- my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+ SL::DB->client->with_transaction(sub {
+ my $dbh = $params{dbh} || SL::DB->client->dbh;
- my @ids = ref $params{id} eq 'ARRAY' ? @{ $params{id} } : ($params{id});
- my $placeholders = join ', ', ('?') x scalar @ids;
- my $query = qq|UPDATE sepa_export SET closed = TRUE WHERE id IN ($placeholders)|;
+ my @ids = ref $params{id} eq 'ARRAY' ? @{ $params{id} } : ($params{id});
+ my $placeholders = join ', ', ('?') x scalar @ids;
+ my $query = qq|UPDATE sepa_export SET closed = TRUE WHERE id IN ($placeholders)|;
- do_query($form, $dbh, $query, map { conv_i($_) } @ids);
-
- $dbh->commit() unless ($params{dbh});
+ do_query($form, $dbh, $query, map { conv_i($_) } @ids);
+ 1;
+ }) or do { die SL::DB->client->error };
$main::lxdebug->leave_sub();
}
if ($filter->{invnumber}) {
push @where_sub, "arap.invnumber ILIKE ?";
- push @values_sub, '%' . $filter->{invnumber} . '%';
+ push @values_sub, like($filter->{invnumber});
$joins_sub{$arap} = 1;
}
+ if ($filter->{message_id}) {
+ push @values, like($filter->{message_id});
+ push @where, <<SQL;
+ se.id IN (
+ SELECT sepa_export_id
+ FROM sepa_export_message_ids
+ WHERE message_id ILIKE ?
+ )
+SQL
+ }
+
if ($filter->{vc}) {
push @where_sub, "vc.name ILIKE ?";
- push @values_sub, '%' . $filter->{vc} . '%';
+ push @values_sub, like($filter->{vc});
$joins_sub{$arap} = 1;
$joins_sub{vc} = 1;
}
my $query =
qq|SELECT se.id, se.employee_id, se.executed, se.closed, itime::date AS export_date,
+ (SELECT COUNT(*)
+ FROM sepa_export_items sei
+ WHERE (sei.sepa_export_id = se.id)) AS num_invoices,
+ (SELECT SUM(sei.amount)
+ FROM sepa_export_items sei
+ WHERE (sei.sepa_export_id = se.id)) AS sum_amounts,
+ (SELECT string_agg(semi.message_id, ', ')
+ FROM sepa_export_message_ids semi
+ WHERE semi.sepa_export_id = se.id) AS message_ids,
e.name AS employee
FROM sepa_export se
LEFT JOIN (
}
sub post_payment {
+ my ($self, %params) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_post_payment, $self, %params);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _post_payment {
my $self = shift;
my %params = @_;
my $mult = $params{vc} eq 'customer' ? -1 : 1;
my $ARAP = uc $arap;
- my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+ my $dbh = $params{dbh} || SL::DB->client->dbh;
my @items = ref $params{items} eq 'ARRAY' ? @{ $params{items} } : ($params{items});
map { $_->[0]->finish() } values %handles;
- $dbh->commit() unless ($params{dbh});
-
- $main::lxdebug->leave_sub();
+ return 1;
}
1;