summaryrefslogtreecommitdiff
path: root/LedgerSMB/Setting.pm
blob: 959fcaeb64c852f0dbf500ace66d8d7b788fa8ca (plain)
  1. =head1 NAME
  2. LedgerSMB::Setting - LedgerSMB class for managing Business Locations
  3. =head1 SYOPSIS
  4. This module creates object instances based on LedgerSMB's in-database ORM.
  5. =head1 METHODS
  6. The following method is static:
  7. =item new ($LedgerSMB object);
  8. The following methods are passed through to stored procedures:
  9. =item get ($self->{key})
  10. =item set ($self->{key}, $self->{value})
  11. =item get_default_accounts()
  12. The above list may grow over time, and may depend on other installed modules.
  13. =head1 Copyright (C) 2007, The LedgerSMB core team.
  14. This file is licensed under the Gnu General Public License version 2, or at your
  15. option any later version. A copy of the license should have been included with
  16. your software.
  17. =back
  18. =cut
  19. package LedgerSMB::Setting;
  20. use LedgerSMB;
  21. use LedgerSMB::DBObject;
  22. our $VERSION = '1.0.0';
  23. our @ISA = qw(LedgerSMB::DBObject);
  24. sub AUTOLOAD {
  25. my $self = shift;
  26. $AUTOLOAD =~ s/^.*:://;
  27. my $procname = "setting_$AUTOLOAD";
  28. $self->exec_method($procname, @_);
  29. }
  30. sub get {
  31. $self = shift;
  32. $hashref = @{$self->exec_method('setting_get');
  33. $self->merge($hashref, 'value');
  34. sub parse {
  35. $self = shift;
  36. # Long-run, we may want to run this via Parse::RecDescent, but this is
  37. # at least a start for here. Chris T.
  38. # Replaces Form::UpdateDefaults
  39. $_ = $self->incriment;
  40. # check for and replace
  41. # <?lsmb DATE ?>, <?lsmb YYMMDD ?>, <?lsmb YEAR ?>, <?lsmb MONTH ?>, <?lsmb DAY ?> or variations of
  42. # <?lsmb NAME 1 1 3 ?>, <?lsmb BUSINESS ?>, <?lsmb BUSINESS 10 ?>, <?lsmb CURR... ?>
  43. # <?lsmb DESCRIPTION 1 1 3 ?>, <?lsmb ITEM 1 1 3 ?>, <?lsmb PARTSGROUP 1 1 3 ?> only for parts
  44. # <?lsmb PHONE ?> for customer and vendors
  45. my $dbvar = $_;
  46. my $var = $_;
  47. my $str;
  48. my $param;
  49. if (/<\?lsmb /) {
  50. while (/<\?lsmb /) {
  51. s/<\?lsmb .*? \?>//;
  52. last unless $&;
  53. $param = $&;
  54. $str = "";
  55. if ($param =~ /<\?lsmb date \?>/i) {
  56. $str = ($self->split_date($myconfig->{dateformat}, $self->{transdate}))[0];
  57. $var =~ s/$param/$str/;
  58. }
  59. if ($param =~ /<\?lsmb (name|business|description|item|partsgroup|phone|custom)/i) {
  60. my $fld = lc $&;
  61. $fld =~ s/<\?lsmb //;
  62. if ($fld =~ /name/) {
  63. if ($self->{type}) {
  64. $fld = $self->{vc};
  65. }
  66. }
  67. my $p = $param;
  68. $p =~ s/(<|>|%)//g;
  69. my @p = split / /, $p;
  70. my @n = split / /, uc $self->{$fld};
  71. if ($#p > 0) {
  72. for (my $i = 1; $i <= $#p; $i++) {
  73. $str .= substr($n[$i-1], 0, $p[$i]);
  74. }
  75. } else {
  76. ($str) = split /--/, $self->{$fld};
  77. }
  78. $var =~ s/$param/$str/;
  79. $var =~ s/\W//g if $fld eq 'phone';
  80. }
  81. if ($param =~ /<\?lsmb (yy|mm|dd)/i) {
  82. my $p = $param;
  83. $p =~ s/(<|>|%)//g;
  84. my $spc = $p;
  85. $spc =~ s/\w//g;
  86. $spc = substr($spc, 0, 1);
  87. my %d = ( yy => 1, mm => 2, dd => 3 );
  88. my @p = ();
  89. my @a = $self->split_date($myconfig->{dateformat}, $self->{transdate});
  90. for (sort keys %d) { push @p, $a[$d{$_}] if ($p =~ /$_/) }
  91. $str = join $spc, @p;
  92. $var =~ s/$param/$str/;
  93. }
  94. if ($param =~ /<\?lsmb curr/i) {
  95. $var =~ s/$param/$self->{currency}/;
  96. }
  97. }
  98. }
  99. $self->{value} = $var;
  100. $var;
  101. }