summaryrefslogtreecommitdiff
path: root/scripts/customer.pl
blob: dfef02cd35880a226ace318a18383e1cd77b61f4 (plain)
  1. =pod
  2. =head1 NAME
  3. LedgerSMB::Scripts::customer - LedgerSMB class defining the Controller
  4. functions, template instantiation and rendering for customer editing and display.
  5. =head1 SYOPSIS
  6. This module is the UI controller for the customer DB access; it provides the
  7. View interface, as well as defines the Save customer.
  8. Save customer will update or create as needed.
  9. =head1 METHODS
  10. =cut
  11. package LedgerSMB::Scripts::customer;
  12. use LedgerSMB::Template;
  13. use LedgerSMB::DBObject::Customer;
  14. =pod
  15. =over
  16. =item get($self, $request, $user)
  17. Requires form var: id
  18. Extracts a single customer from the database, using its company ID as the primary
  19. point of uniqueness. Shows (appropriate to user privileges) and allows editing
  20. of the customer informations.
  21. =back
  22. =cut
  23. sub get {
  24. my ($request) = @_;
  25. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  26. my $result = $customer->get($customer->{id});
  27. my $template = LedgerSMB::Template->new( user => $user,
  28. template => 'customer.html', language => $user->{language},
  29. format => 'html');
  30. $template->render($results);
  31. }
  32. sub add {
  33. my ($request) = @_;
  34. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  35. my $template = LedgerSMB::Template->new( user => $user,
  36. template => 'customer.html', language => $user->{language},
  37. format => 'html');
  38. $template->render($results);
  39. }
  40. =pod
  41. =over
  42. =item search($self, $request, $user)
  43. Requires form var: search_pattern
  44. Directly calls the database function search, and returns a set of all customers
  45. found that match the search parameters. Search parameters search over address
  46. as well as customer/Company name.
  47. =back
  48. =cut
  49. sub search {
  50. my ($request) = @_;
  51. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  52. my $results = $customer->search($customer->{search_pattern});
  53. my $template = LedgerSMB::Template->new( user => $user,
  54. template => 'customer_search.html', language => $user->{language},
  55. format => 'html');
  56. $template->render($results);
  57. }
  58. =pod
  59. =over
  60. =item save($self, $request, $user)
  61. Saves a customer to the database. The function will update or insert a new
  62. customer as needed, and will generate a new Company ID for the customer if needed.
  63. =back
  64. =cut
  65. sub save {
  66. my ($request) = @_;
  67. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  68. my $result = $customer->save_to_db();
  69. my $template = LedgerSMB::Template->new( user => $user,
  70. template => 'customer.html', language => $user->{language},
  71. format => 'html');
  72. $template->render($result);
  73. }
  74. 1;