summaryrefslogtreecommitdiff
path: root/scripts/customer.pl
blob: 988538a8f9b8bcdb3eebd9219e764164752497e5 (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::Customer->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', 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::Customer->new(base => $request, copy => 'all');
  44. $customer->set(entity_class=>2);
  45. $customer->get_metadata();
  46. my $template = LedgerSMB::Template->new(
  47. user => $user,
  48. template => 'customer',
  49. path => 'UI/Customer',
  50. locale => $request->{_locale},
  51. format => 'HTML');
  52. $request->{script} = 'Customer/customer';
  53. $template->render($customer);
  54. }
  55. =pod
  56. =over
  57. =item search($self, $request, $user)
  58. Requires form var: search_pattern
  59. Directly calls the database function search, and returns a set of all customers
  60. found that match the search parameters. Search parameters search over address
  61. as well as customer/Company name.
  62. =back
  63. =cut
  64. sub search {
  65. my ($request) = @_;
  66. if ($request->type() eq 'POST') {
  67. # assume it's asking us to do the search, now
  68. my $customer = LedgerSMB::DBObject::Customer->new(base => $request, copy => 'all');
  69. $customer->set(entity_class=>2);
  70. my $results = $customer->search($customer->{search_pattern});
  71. my $template = LedgerSMB::Template->new( user => $user,
  72. template => 'Customer/customer', language => $user->{language},
  73. format => 'HTML');
  74. $template->render($results);
  75. }
  76. else {
  77. # grab the happy search page out.
  78. my $template = LedgerSMB::Template->new(
  79. user => $user,
  80. path => 'UI/Customer' ,
  81. template => 'customer_search',
  82. locale => $request->{_locale},
  83. format => 'HTML');
  84. $template->render();
  85. }
  86. }
  87. =pod
  88. =over
  89. =item save($self, $request, $user)
  90. Saves a customer to the database. The function will update or insert a new
  91. customer as needed, and will generate a new Company ID for the customer if needed.
  92. =back
  93. =cut
  94. sub save {
  95. my ($request) = @_;
  96. my $customer = LedgerSMB::DBObject::Customer->new({base => $request});
  97. my $result = $customer->save();
  98. my $template = LedgerSMB::Template->new( user => $request->{_user},
  99. template => 'customer', locale => $request->{_locale},
  100. path => 'UI/Customer',
  101. format => 'HTML');
  102. $template->render($customer);
  103. }
  104. 1;