######################################################################
# LedgerSMB Small Medium Business Accounting
# http://www.ledgersmb.org/
#
# Copyright (C) 2006
# This work contains copyrighted information from a number of sources all used
# with permission.
#
# This file contains source code included with or based on SQL-Ledger which
# is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed
# under the GNU General Public License version 2 or, at your option, any later
# version. For a full list including contact information of contributors,
# maintainers, and copyright holders, see the CONTRIBUTORS file.
#
# Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
# Copyright (c) 2002
#
# Author: DWS Systems Inc.
# Web: http://www.sql-ledger.org
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#######################################################################
#
# common routines used in is, ir, oe
#
#######################################################################
use Error qw(:try);
use LedgerSMB::Tax;
use LedgerSMB::Template;
use LedgerSMB::Sysconfig;
# any custom scripts for this one
if ( -f "bin/custom/io.pl" ) {
eval { require "bin/custom/io.pl"; };
}
if ( -f "bin/custom/$form->{login}_io.pl" ) {
eval { require "bin/custom/$form->{login}_io.pl"; };
}
1;
# end of main
# this is for our long dates
# $locale->text('January')
# $locale->text('February')
# $locale->text('March')
# $locale->text('April')
# $locale->text('May ')
# $locale->text('June')
# $locale->text('July')
# $locale->text('August')
# $locale->text('September')
# $locale->text('October')
# $locale->text('November')
# $locale->text('December')
# this is for our short month
# $locale->text('Jan')
# $locale->text('Feb')
# $locale->text('Mar')
# $locale->text('Apr')
# $locale->text('May')
# $locale->text('Jun')
# $locale->text('Jul')
# $locale->text('Aug')
# $locale->text('Sep')
# $locale->text('Oct')
# $locale->text('Nov')
# $locale->text('Dec')
sub _calc_taxes {
for $i (1 .. $form->{rowcount}){
my $linetotal =
$form->parse_amount(\%myconfig, $form->{"sellprice_$i"})
* $form->parse_amount(\%myconfig, $form->{"qty_$i"})
* (1 - $form->parse_amount(\%myconfig, $form->{"discount_$i"})
/ 100);
@taxaccounts = Tax::init_taxes(
$form, $form->{"taxaccounts_$i"},
$form->{'taxaccounts'}
);
my $tax;
my $fxtax;
my $amount;
if ( $form->{taxincluded} ) {
$tax += $amount =
Tax::calculate_taxes( \@taxaccounts, $form, $linetotal, 1 );
$form->{"sellprice_$i"} -= $amount / $form->{"qty_$i"};
}
else {
$tax += $amount =
Tax::calculate_taxes( \@taxaccounts, $form, $linetotal, 0 );
$fxtax +=
Tax::calculate_taxes( \@taxaccounts, $form, $fxlinetotal, 0 )
if $fxlinetotal;
}
for (@taxaccounts) {
$form->{taxes}{$_->account} = 0 if ! $form->{taxes}{$_->account};
$form->{taxes}{$_->account} += $_->value;
}
}
}
sub display_row {
my $numrows = shift;
@column_index = qw(runningnumber partnumber description qty);
if ( $form->{type} eq "sales_order" ) {
push @column_index, "ship";
$column_data{ship} =
qq|