summaryrefslogtreecommitdiff
path: root/scripts/customer.pl
blob: c89cd5c5ed8ab947f516a59c58094dcc975b34e4 (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. require '../lsmb-request.pl';
  15. =pod
  16. =over
  17. =item get($self, $request, $user)
  18. Requires form var: id
  19. Extracts a single customer from the database, using its company ID as the primary
  20. point of uniqueness. Shows (appropriate to user privileges) and allows editing
  21. of the customer informations.
  22. =back
  23. =cut
  24. sub get {
  25. my ($request) = @_;
  26. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  27. my $result = $customer->get($customer->{id});
  28. my $template = LedgerSMB::Template->new( user => $user,
  29. template => 'customer.html', language => $user->{language},
  30. format => 'html');
  31. $template->render($results);
  32. }
  33. =pod
  34. =over
  35. =item add
  36. This method creates a blank screen for entering a customer's information.
  37. =back
  38. =cut
  39. sub add {
  40. my ($request) = @_;
  41. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  42. my $template = LedgerSMB::Template->new( user => $user,
  43. template => 'customer.html', language => $user->{language},
  44. format => 'html');
  45. $template->render($results);
  46. }
  47. =pod
  48. =over
  49. =item search($self, $request, $user)
  50. Requires form var: search_pattern
  51. Directly calls the database function search, and returns a set of all customers
  52. found that match the search parameters. Search parameters search over address
  53. as well as customer/Company name.
  54. =back
  55. =cut
  56. sub search {
  57. my ($request) = @_;
  58. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  59. my $results = $customer->search($customer->{search_pattern});
  60. my $template = LedgerSMB::Template->new( user => $user,
  61. template => 'customer_search.html', language => $user->{language},
  62. format => 'html');
  63. $template->render($results);
  64. }
  65. =pod
  66. =over
  67. =item save($self, $request, $user)
  68. Saves a customer to the database. The function will update or insert a new
  69. customer as needed, and will generate a new Company ID for the customer if needed.
  70. =back
  71. =cut
  72. sub save {
  73. my ($request) = @_;
  74. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  75. my $result = $customer->save_to_db();
  76. my $template = LedgerSMB::Template->new( user => $user,
  77. template => 'customer.html', language => $user->{language},
  78. format => 'html');
  79. $template->render($result);
  80. }
  81. 1;