summaryrefslogtreecommitdiff
path: root/scripts/customer.pl
blob: 7fc238da7ba451cf541cc588bd7b301b2403ab91 (plain)
  1. #!/usr/bin/perl
  2. =pod
  3. =head1 NAME
  4. LedgerSMB::Scripts::customer - LedgerSMB class defining the Controller
  5. functions, template instantiation and rendering for customer editing and display.
  6. =head1 SYOPSIS
  7. This module is the UI controller for the customer DB access; it provides the
  8. View interface, as well as defines the Save customer.
  9. Save customer will update or create as needed.
  10. =head1 METHODS
  11. =cut
  12. package LedgerSMB::Scripts::customer;
  13. use LedgerSMB::Template;
  14. use LedgerSMB::DBObject::Customer;
  15. require 'lsmb-request.pl';
  16. =pod
  17. =over
  18. =item get($self, $request, $user)
  19. Requires form var: id
  20. Extracts a single customer from the database, using its company ID as the primary
  21. point of uniqueness. Shows (appropriate to user privileges) and allows editing
  22. of the customer informations.
  23. =back
  24. =cut
  25. sub get {
  26. my ($request) = @_;
  27. my $customer = LedgerSMB::DBObject::Company->new(base => $request, copy => 'all');
  28. $customer->set( entity_class=> '2' );
  29. my $result = $customer->get();
  30. my $template = LedgerSMB::Template->new( user => $user,
  31. template => 'Customer/customer.html', language => $user->{language},
  32. format => 'html');
  33. $template->render($results);
  34. }
  35. =pod
  36. =over
  37. =item add
  38. This method creates a blank screen for entering a customer's information.
  39. =back
  40. =cut
  41. sub add {
  42. my ($request) = @_;
  43. my $customer = LedgerSMB::DBObject::Company->new(base => $request, copy => 'all');
  44. $customer->set(entity_class=>2);
  45. my $template = LedgerSMB::Template->new( user => $user,
  46. template => 'Customer/customer.html', language => $user->{language},
  47. format => 'html');
  48. $template->render($results);
  49. }
  50. =pod
  51. =over
  52. =item search($self, $request, $user)
  53. Requires form var: search_pattern
  54. Directly calls the database function search, and returns a set of all customers
  55. found that match the search parameters. Search parameters search over address
  56. as well as customer/Company name.
  57. =back
  58. =cut
  59. sub search {
  60. my ($request) = @_;
  61. if ($request->type() eq 'POST') {
  62. # assume it's asking us to do the search, now
  63. my $customer = LedgerSMB::DBObject::Company->new(base => $request, copy => 'all');
  64. $customer->set(entity_class=>2);
  65. my $results = $customer->search($customer->{search_pattern});
  66. my $template = LedgerSMB::Template->new( user => $user,
  67. template => 'Customer/customer.html', language => $user->{language},
  68. format => 'html');
  69. $template->render($results);
  70. }
  71. else {
  72. # grab the happy search page out.
  73. my $template = LedgerSMB::Template->new( user => $user,
  74. template => 'Customer/customer_search.html', language => $user->{language},
  75. format => 'html');
  76. $template->render();
  77. }
  78. }
  79. =pod
  80. =over
  81. =item save($self, $request, $user)
  82. Saves a customer to the database. The function will update or insert a new
  83. customer as needed, and will generate a new Company ID for the customer if needed.
  84. =back
  85. =cut
  86. sub save {
  87. my ($request) = @_;
  88. if ($request->type() == 'POST') {
  89. my $customer = LedgerSMB::DBObject::Customer->get(base=>$request, copy=>'all');
  90. unless ($customer) {
  91. $customer = LedgerSMB::DBObject::Customer->new(base=>$reqest, copy=>'all');
  92. }
  93. my $result = $customer->save();
  94. my $template = LedgerSMB::Template->new( user => $user,
  95. template => 'Customer/customer.html', language => $user->{language},
  96. format => 'html');
  97. $template->render($result);
  98. }
  99. else {
  100. }
  101. }
  102. 1;