diff options
author | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2008-09-09 22:17:46 +0000 |
---|---|---|
committer | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2008-09-09 22:17:46 +0000 |
commit | a2fe34ab7ed7d1f7dffc13d09d76a9b15e25abc8 (patch) | |
tree | 05f4ef4ba6770c249c7007711825f64e4de936f1 /scripts | |
parent | 7a37d5f875cad6c143b3d19226ebc5df7549faae (diff) |
Refactored code for customers and vendors for better maintenance and customizability
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2318 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/customer.pl | 295 | ||||
-rw-r--r-- | scripts/vendor.pl | 300 |
2 files changed, 14 insertions, 581 deletions
diff --git a/scripts/customer.pl b/scripts/customer.pl index fb1297ba..1e2d40e6 100644 --- a/scripts/customer.pl +++ b/scripts/customer.pl @@ -20,299 +20,18 @@ Save customer will update or create as needed. package LedgerSMB::Scripts::customer; -use LedgerSMB::Template; use LedgerSMB::DBObject::Customer; +use base qw(LedgerSMB::ScriptLib::Company); require 'lsmb-request.pl'; -=pod - -=over - -=item get($self, $request, $user) - -Requires form var: id - -Extracts a single customer from the database, using its company ID as the primary -point of uniqueness. Shows (appropriate to user privileges) and allows editing -of the customer informations. - -=back - -=cut - - -sub get { - - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all'); - - $customer->set( entity_class=> '2' ); - my $result = $customer->get(); - $customer->get_credit_id(); - my $template = LedgerSMB::Template->new( - template => 'contact', - user => $request->{_user}, - locale => $request->{_locale}, - path => 'UI/Contact', - format => 'HTML'); - $template->render($results); - -} - - -sub add_location { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request, copy => 'all'}); - $customer->set( entity_class=> '2' ); - $customer->save_location(); - $customer->get(); - - - $customer->get_metadata(); - - _render_main_screen($customer); - -} - -=pod - -=over - -=item add - -This method creates a blank screen for entering a customer's information. - -=back - -=cut - -sub add { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all'); - $customer->set( entity_class=> '2' ); - _render_main_screen($customer); -} - -=pod - -=over - -=item search($self, $request, $user) - -Requires form var: search_pattern - -Directly calls the database function search, and returns a set of all customers -found that match the search parameters. Search parameters search over address -as well as customer/Company name. - -=back - -=cut - -sub search { - my ($request) = @_; - - - $request->{script} = "customer.pl"; - $request->{account_class} = 2; - my $template = LedgerSMB::Template->new( - user => $request->{_user}, - path => 'UI/Contact' , - template => 'search', - locale => $request->{_locale}, - format => 'HTML'); - - $template->render($request); -} - -=pod - -=item get_result($self, $request, $user) - -Requires form var: search_pattern - -Directly calls the database function search, and returns a set of all vendors -found that match the search parameters. Search parameters search over address -as well as vendor/Company name. - -=back - -=cut - -sub get_results { - my ($request) = @_; - - my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all'); - $customer->set(entity_class=>2); - $customer->{contact_info} = qq|{"%$request->{email}%","%$request->{phone}%"}|; - my $results = $customer->search(); - if ($customer->{order_by}){ - # TODO: Set ordering logic - }; - - # URL Setup - my $baseurl = "$request->{script}"; - my $search_url = "$base_url?action=get_results"; - my $get_url = "$base_url?action=get&account_class=$request->{account_class}"; - for (keys %$vendor){ - next if $_ eq 'order_by'; - $search_url .= "&$_=$form->{$_}"; - } - - # Column definitions for dynatable - @columns = qw(legal_name meta_number business_type curr); - my %column_heading; - $column_heading{legal_name} = { - text => $request->{_locale}->text('Name'), - href => "$search_url&order_by=legal_name", - }; - $column_heading{meta_number} = { - text => $request->{_locale}->text('Customer Number'), - href => "$search_url&order_by=meta_number", - }; - $column_heading{business_type} = { - text => $request->{_locale}->text('Business Type'), - href => "$search_url&order_by=business_type", - }; - $column_heading{curr} = { - text => $request->{_locale}->text('Currency'), - href => "$search_url&order_by=curr", - }; - - my @rows; - for $ref (@{$customer->{search_results}}){ - push @rows, - {legal_name => $ref->{legal_name}, - meta_number => {text => $ref->{meta_number}, - href => "$get_url&entity_id=$ref->{entity_id}" . "&meta_number=$ref->{meta_number}" - }, - business_type => $ref->{business_type}, - curr => $ref->{curr}, - }; - } -# CT: The CSV Report is broken. I get: -# Not an ARRAY reference at -# /usr/lib/perl5/site_perl/5.8.8/CGI/Simple.pm line 423 -# Disabling the button for now. - my @buttons = ( -# {name => 'action', -# value => 'csv_vendor_list', -# text => $vendor->{_locale}->text('CSV Report'), -# type => 'submit', -# class => 'submit', -# }, - {name => 'action', - value => 'add', - text => $customer->{_locale}->text('Add Customer'), - type => 'submit', - class => 'submit', - } - ); - - my $template = LedgerSMB::Template->new( - user => $user, - path => 'UI' , - template => 'form-dynatable', - locale => $customer->{_locale}, - format => ($request->{FORMAT}) ? $request->{FORMAT} : 'HTML', - ); - - $template->render({ - form => $customer, - columns => \@columns, - hiddens => $vendor, - buttons => \@buttons, - heading => \%column_heading, - rows => \@rows, - }); -} -=pod - -=over - -=item save($self, $request, $user) - -Saves a customer to the database. The function will update or insert a new -customer as needed, and will generate a new Company ID for the customer if needed. - -=back - -=cut - -sub save { - +sub set_entity_class { my ($request) = @_; - - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->save(); - _render_main_screen($customer); -} - -sub save_credit { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->save_credit(); - $customer->get(); - _render_main_screen($customer); + $request->{entity_class} = 2; + return 1; } -sub save_credit_new { - my ($request) = @_; - $request->{credit_id} = undef; - save_credit($request); -} - - -sub edit{ - my $request = shift @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->get(); - $customer->get_credit_id(); - _render_main_screen($customer); -} - -sub _render_main_screen{ - my $customer = shift @_; - $customer->get_metadata(); - - $customer->{creditlimit} = "$customer->{creditlimit}"; - $customer->{discount} = "$customer->{discount}"; - $customer->{script} = "customer.pl"; - - my $template = LedgerSMB::Template->new( - user => $customer->{_user}, - template => 'contact', - locale => $customer->{_locale}, - path => 'UI/Contact', - format => 'HTML' - ); - $template->render($customer); -} - -sub save_contact { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->save_contact(); - $customer->get; - _render_main_screen($customer); -} - -sub save_bank_account { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->save_bank_account(); - $customer->get; - _render_main_screen($customer); -} - -sub save_notes { - my ($request) = @_; - my $customer = LedgerSMB::DBObject::Customer->new({base => $request}); - $customer->save_notes(); - $customer->get(); - _render_main_screen($customer); +sub new_company { + my ($null, $request) = @_; + return LedgerSMB::DBObject::Customer->new(base=> $request, copy => 'all'); } - -eval { do "scripts/custom/customer.pl"}; -1; diff --git a/scripts/vendor.pl b/scripts/vendor.pl index ed415140..f048aa36 100644 --- a/scripts/vendor.pl +++ b/scripts/vendor.pl @@ -20,308 +20,22 @@ Save vendor will update or create as needed. package LedgerSMB::Scripts::vendor; -use LedgerSMB::Template; use LedgerSMB::DBObject::Vendor; +use base qw(LedgerSMB::ScriptLib::Company); require 'lsmb-request.pl'; -=pod - -=over - -=item get($self, $request, $user) - -Requires form var: id - -Extracts a single vendor from the database, using its company ID as the primary -point of uniqueness. Shows (appropriate to user privileges) and allows editing -of the vendor informations. - -=back - -=cut - -sub get { - +sub set_entity_class { my ($request) = @_; - my $vendor = LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all'); - - $vendor->set( entity_class=> '1' ); - $vendor->get(); - $vendor->get_credit_id(); - $vendor->get_metadata(); - _render_main_screen($vendor); + $request->{entity_class} = 1; + return 1; } - -sub add_location { - my ($request) = @_; - my $vendor= LedgerSMB::DBObject::Vendor->new({base => $request, copy => 'all'}); - $vendor->set( entity_class=> '1' ); - $vendor->save_location(); - $vendor->get(); - - - $vendor->get_metadata(); - - _render_main_screen($vendor); - +sub new_company { + my ($null, $request) = @_; + return LedgerSMB::DBObject::Vendor->new(base=> $request, copy => 'all'); } -sub generate_control_code { - my ($request) = @_; - my $vendor= LedgerSMB::DBObject::Vendor->new({base => $request, copy => 'all'}); - - my ($ref) = $vendor->call_procedure( - procname => 'setting_increment', - args => ['entity_control'] - ); - ($vendor->{control_code}) = values %$ref; - $vendor->{dbh}->commit; - if ($vendor->{meta_number}){ - edit($vendor); - } else { - _render_main_screen($vendor); - } - -} - -=pod - -=over - -=item add - -This method creates a blank screen for entering a vendor's information. - -=back - -=cut - -sub add { - my ($request) = @_; - my $vendor= LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all'); - $vendor->set( entity_class=> '1' ); - _render_main_screen($vendor); -} - -=pod - -=over - -=item get_result($self, $request, $user) - -Requires form var: search_pattern - -Directly calls the database function search, and returns a set of all vendors -found that match the search parameters. Search parameters search over address -as well as vendor/Company name. - -=back - -=cut - -sub get_results { - my ($request) = @_; - - my $vendor = LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all'); - $vendor->set(entity_class=>1); - $vendor->{contact_info} = qq|{"%$request->{email}%","%$request->{phone}%"}|; - my $results = $vendor->search(); - if ($vendor->{order_by}){ - # TODO: Set ordering logic - }; - - # URL Setup - my $baseurl = "$request->{script}"; - my $search_url = "$base_url?action=get_results"; - my $get_url = "$base_url?action=get&account_class=$request->{account_class}"; - for (keys %$vendor){ - next if $_ eq 'order_by'; - $search_url .= "&$_=$form->{$_}"; - } - - # Column definitions for dynatable - @columns = qw(legal_name meta_number business_type curr); - my %column_heading; - $column_heading{legal_name} = { - text => $request->{_locale}->text('Name'), - href => "$search_url&order_by=legal_name", - }; - $column_heading{meta_number} = { - text => $request->{_locale}->text('Vendor Number'), - href => "$search_url&order_by=meta_number", - }; - $column_heading{business_type} = { - text => $request->{_locale}->text('Business Type'), - href => "$search_url&order_by=business_type", - }; - $column_heading{curr} = { - text => $request->{_locale}->text('Currency'), - href => "$search_url&order_by=curr", - }; - - my @rows; - for $ref (@{$vendor->{search_results}}){ - push @rows, - {legal_name => $ref->{legal_name}, - meta_number => {text => $ref->{meta_number}, - href => "$get_url&entity_id=$ref->{entity_id}" . "&meta_number=$ref->{meta_number}" - }, - business_type => $ref->{business_type}, - curr => $ref->{curr}, - }; - } -# CT: The CSV Report is broken. I get: -# Not an ARRAY reference at -# /usr/lib/perl5/site_perl/5.8.8/CGI/Simple.pm line 423 -# Disabling the button for now. - my @buttons = ( -# {name => 'action', -# value => 'csv_vendor_list', -# text => $vendor->{_locale}->text('CSV Report'), -# type => 'submit', -# class => 'submit', -# }, - {name => 'action', - value => 'add', - text => $vendor->{_locale}->text('Add Vendor'), - type => 'submit', - class => 'submit', - } - ); - - my $template = LedgerSMB::Template->new( - user => $user, - path => 'UI' , - template => 'form-dynatable', - locale => $vendor->{_locale}, - format => ($request->{FORMAT}) ? $request->{FORMAT} : 'HTML', - ); - - $template->render({ - form => $vendor, - columns => \@columns, - hiddens => $vendor, - buttons => \@buttons, - heading => \%column_heading, - rows => \@rows, - }); -} - -sub csv_vendor_list { - my ($request) = @_; - $request->{FORMAT} = 'CSV'; - get_results($request); -} - -=pod - -=over - -=item save($self, $request, $user) - -Saves a vendor to the database. The function will update or insert a new -vendor as needed, and will generate a new Company ID for the vendor if needed. - -=back - -=cut - - -sub save { - - my ($request) = @_; - - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->save(); - _render_main_screen($vendor); -} - -sub save_credit { - - my ($request) = @_; - - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->save_credit(); - $vendor->get(); - _render_main_screen($vendor); -} - -sub save_credit_new { - my ($request) = @_; - $request->{credit_id} = undef; - save_credit($request); -} - -sub edit{ - my $request = shift @_; - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->get(); - _render_main_screen($vendor); -} - -sub _render_main_screen{ - my $vendor = shift @_; - $vendor->get_metadata(); - - $vendor->{creditlimit} = "$vendor->{creditlimit}"; - $vendor->{discount} = "$vendor->{discount}"; - $vendor->{script} = "vendor.pl"; - $vendor->{note_class_options} = [ - {label => 'Entity', value => 1}, - {label => 'Vendor Account', value => 3}, - ]; - $vendor->{threshold} = $vendor->format_amount(amount => $vendor->{threshold}); - - my $template = LedgerSMB::Template->new( - user => $vendor->{_user}, - template => 'contact', - locale => $vendor->{_locale}, - path => 'UI/Contact', - format => 'HTML' - ); - $template->render($vendor); -} - -sub search { - my ($request) = @_; - $request->{account_class} = 1; - $request->{script} = 'vendor.pl'; - my $template = LedgerSMB::Template->new( - user => $request->{_user}, - template => 'search', - locale => $request->{_locale}, - path => 'UI/Contact', - format => 'HTML' - ); - $template->render($request); -} - -sub save_contact { - my ($request) = @_; - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->save_contact(); - $vendor->get; - _render_main_screen($vendor ); -} - - -sub save_bank_account { - my ($request) = @_; - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->save_bank_account(); - $vendor->get; - _render_main_screen($vendor ); -} - -sub save_notes { - my ($request) = @_; - my $vendor = LedgerSMB::DBObject::Vendor->new({base => $request}); - $vendor->save_notes(); - $vendor->get(); - _render_main_screen($vendor ); -} eval { do "scripts/custom/vendor.pl"}; 1; |