package LedgerSMB::Scripts::drafts; our $VERSION = '0.1'; use LedgerSMB::DBObject::Draft; use LedgerSMB::Template; use strict; sub search { my ($request) = @_; $request->{class_types} = [ {text => $request->{_locale}->text('AR'), value => 'ar'}, {text => $request->{_locale}->text('AP'), value => 'ap'}, {text => $request->{_locale}->text('GL'), value => 'gl'}, ]; my $template = LedgerSMB::Template->new( user =>$request->{_user}, locale => $request->{_locale}, path => 'UI', template => 'batch/search_transactions', format => 'HTML' ); $template->render($request); } sub list_drafts_draft_approve { my ($request) = @_; my $draft= LedgerSMB::DBObject::Draft->new(base => $request); for my $row (1 .. $draft->{rowcount}){ if ($draft->{"draft_" .$draft->{"row_$row"}}){ $draft->{id} = $draft->{"row_$row"}; $draft->approve; } } search($request); } sub list_drafts_draft_delete { my ($request) = @_; my $draft= LedgerSMB::DBObject::Draft->new(base => $request); for my $row (1 .. $draft->{rowcount}){ if ($draft->{"draft_" .$draft->{"row_$row"}}){ $draft->{id} = $draft->{"row_$row"}; $draft->delete; } } search($request); } sub list_drafts { my ($request) = @_; my $draft= LedgerSMB::DBObject::Draft->new(base => $request); my $callback = 'drafts.pl?action=list_drafts'; for (qw(type reference amount_gy amount_lt)){ if (defined $draft->{$_}){ $callback .= "&$_=$draft->{$_}"; } } my @search_results = $draft->search; $draft->{script} = "drafts.pl"; $draft->{callback} = $draft->escape(string => $callback); my @columns = qw(select id transdate reference description amount); my $base_href = "drafts.pl"; my $search_href = "$base_href?action=list_transactions"; my $draft_href= "$base_href?action=get_transaction"; for my $key ( qw(class_id approved created_by description amount_gt amount_lt) ){ $search_href .= "&$key=$draft->{key}"; } my %column_heading = ( 'select' => $draft->{_locale}->text('Select'), amount => { text => $draft->{_locale}->text('AR/AP/GL Total'), href => "$search_href&order_by=transaction_total" }, description => { text => $draft->{_locale}->text('Description'), href => "$search_href&order_by=description" }, id => { text => $draft->{_locale}->text('ID'), href => "$search_href&order_by=id" }, reference => { text => $draft->{_locale}->text('Reference'), href => "$search_href&order_by=reference" }, transdate => { text => $draft->{_locale}->text('Date'), href => "$search_href&order_by=transdate" }, ); my $count = 0; my @rows; for my $result (@search_results){ ++$count; $draft->{"row_$count"} = $result->{id}; push @rows, { 'select' => { input => { type => 'checkbox', value => 1, name => "draft_$result->{id}" } }, amount => $draft->format_amount( amount => $result->{amount} ), reference => { text => $result->{reference}, href => "$request->{type}.pl?action=edit&id=$result->{id}" . "&callback=$draft->{callback}", }, description => $result->{description}, transdate => $result->{transdate}, id => $result->{id}, }; } $draft->{rowcount} = $count; my $template = LedgerSMB::Template->new( user => $request->{_user}, locale => $request->{_locale}, path => 'UI', template => 'form-dynatable', format => ($draft->{format}) ? $draft->{format} : 'HTML', ); my $hiddens = $draft->take_top_level(); $draft->{rowcount} = "$count"; delete $draft->{search_results}; $template->render({ form => $draft, columns => \@columns, heading => \%column_heading, rows => \@rows, hiddens => $hiddens, buttons => [{ name => 'action', type => 'submit', text => $request->{_locale}->text('Post'), value => 'draft_approve', class => 'submit', },{ name => 'action', type => 'submit', text => $request->{_locale}->text('Delete'), value => 'draft_delete', class => 'submit', }] }); } sub delete_drafts { my ($request) = @_; }