Business-ReportWriter

 view release on metacpan or  search on metacpan

ex/inventory.xml  view on Meta::CPAN

    <item key="search" >
      <hashref>
        <item key="!Fields" >sku,quantity,description,category</item>
        <item key="!Table" >inventory, products</item>
        <item key="!TabJoin" >inventory JOIN products USING (sku)</item>
        <item key="$order" >category</item>
      </hashref>
    </item>
    <item key="report" >
      <hashref>
        <item key="locale" >en_US</item>
        <item key="papersize" >A4</item>
      </hashref>
    </item>
    <item key="breaks" >
      <hashref>
        <item key="quantity" >
          <hashref>
            <item key="font" >
              <hashref>
                <item key="face" >Helvetica-Bold</item>

ex/jrnllist.xml  view on Meta::CPAN

            <item key="0" >10000</item>
            <item key="1" >19999</item>
            <item key="2" >2003-1-1</item>
            <item key="3" >2003-3-1</item>
          </arrayref>
        </item>
      </hashref>
    </item>
    <item key="report" >
      <hashref>
        <item key="locale" >da_DK</item>
        <item key="papersize" >A4</item>
      </hashref>
    </item>
    <item key="breaks" >
      <hashref>
        <item key="_total" >
          <hashref>
            <item key="format" >%.2f</item>
            <item key="order" >2</item>
            <item key="text" />

ex/trialbal.xml  view on Meta::CPAN

      <item key="2">2002-1-1</item>
      <item key="3">2002-12-31</item>
     </arrayref>
    </item>
    <item key="$where">number BETWEEN ? AND ? 
        AND accountingdate BETWEEN ? AND ?</item>
   </hashref>
  </item>
  <item key="report">
   <hashref>
    <item key="locale">da_DK</item>
    <item key="papersize">A4</item>
   </hashref>
  </item>
  <item key="breaks">
   <hashref>
    <item key="_total">
     <hashref>
      <item key="format">%.2f</item>
      <item key="order">1</item>
      <item key="text"></item>

lib/Business/ReportWriter.pm  view on Meta::CPAN

package Business::ReportWriter;

use strict;
use POSIX qw(setlocale LC_NUMERIC);

sub new {
    my ( $class, %parms ) = @_;

    my $self = {};
    $self = bless $self, $class;

    return $self;
}

lib/Business/ReportWriter.pm  view on Meta::CPAN


sub make_func {
    my ( $self, $rec, $func ) = @_;

    my @fields = ( $func =~ /\$(\w*)/g );
    for my $field (@fields) {
        $func =~ s/\$$field/\$rec->{$field}/g;
    }

    my $text;
    setlocale( LC_NUMERIC, $self->{report}{locale} );
    eval( '$text = ' . $func );
    setlocale( LC_NUMERIC, "C" );
    return $text;
}

1;
__END__

=head1 NAME

Business::ReportWriter - A Business Oriented ReportWriter.

lib/Business/ReportWriter.pm  view on Meta::CPAN

A hash reference describing the wanted output. Contains these sections:

=over 4

=item report

=back

Hash with report wide information. Possible entries: 

I<locale> - eg us_EN, da_DK...

I<papersize> - A4, Letter...

=head3 breaks
 
A hash defining the line breaks / report totals. Hash key is the name of
the field to totl, pointing to a new hash containing 

I<order> Sort order of break, starting from 0. Must be unique.

lib/Business/ReportWriter/OOCalc.pm  view on Meta::CPAN

package Business::ReportWriter::OOCalc;

use strict;
use POSIX qw(setlocale LC_NUMERIC);
use utf8;
use OpenOffice::OOCBuilder;

use base 'Business::ReportWriter';

sub begin_line {
    my ( $self, $rec ) = @_;

    $self->{rownr}++;
    $self->{fieldnr} = 0;

lib/Business/ReportWriter/Pdf.pm  view on Meta::CPAN

package Business::ReportWriter::Pdf;

use strict;
use POSIX qw(setlocale LC_NUMERIC);
use utf8;

use base 'Business::ReportWriter';

sub init_fields {
    my ( $self, $parms ) = @_;

    $self->SUPER::fields($parms);
    my @fields = @$parms if $parms;



( run in 1.517 second using v1.01-cache-2.11-cpan-ceb78f64989 )