295 lines
8.1 KiB
Perl
295 lines
8.1 KiB
Perl
package WebGUI::Commerce::Payment::Cash;
|
|
|
|
=head1 LEGAL
|
|
|
|
-------------------------------------------------------------------
|
|
WebGUI is Copyright 2001-2006 Plain Black Corporation.
|
|
-------------------------------------------------------------------
|
|
Please read the legal notices (docs/legal.txt) and the license
|
|
(docs/license.txt) that came with this distribution before using
|
|
this software.
|
|
-------------------------------------------------------------------
|
|
http://www.plainblack.com info@plainblack.com
|
|
-------------------------------------------------------------------
|
|
|
|
=head1 NAME
|
|
|
|
Package WebGUI::Payment::Cash
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Payment plug-in for cash transactions.
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use WebGUI::HTMLForm;
|
|
use WebGUI::Commerce::Payment;
|
|
use WebGUI::Commerce::Item;
|
|
use Tie::IxHash;
|
|
use WebGUI::International;
|
|
use WebGUI::SQL;
|
|
|
|
our @ISA = qw(WebGUI::Commerce::Payment);
|
|
|
|
|
|
#-------------------------------------------------------------------
|
|
sub connectionError {
|
|
|
|
return undef;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub checkoutForm {
|
|
my ($self, $u, $f, %months, %years, $i18n);
|
|
$self = shift;
|
|
|
|
$i18n = WebGUI::International->new($self->session, 'CommercePaymentCash');
|
|
|
|
$u = WebGUI::User->new($self->session,$self->session->user->userId);
|
|
|
|
$f = WebGUI::HTMLForm->new($self->session);
|
|
|
|
$f->selectBox(
|
|
-name=>"paymentMethod",
|
|
-label=>$i18n->get("payment method"),
|
|
-value=>[$self->session->form->process("paymentMethod")],
|
|
-defaultValue=>['cash'],
|
|
-options=> { 'cash' => $i18n->get('cash'),
|
|
'check' => $i18n->get('check'),
|
|
'other' => $i18n->get('other'),
|
|
}
|
|
);
|
|
|
|
$f->text(
|
|
-name => 'firstName',
|
|
-label => $i18n->get('firstName'),
|
|
-value => $self->session->form->process("firstName") || $u->profileField('firstName')
|
|
);
|
|
$f->text(
|
|
-name => 'lastName',
|
|
-label => $i18n->get('lastName'),
|
|
-value => $self->session->form->process("lastName") || $u->profileField('lastName')
|
|
);
|
|
$f->text(
|
|
-name => 'address',
|
|
-label => $i18n->get('address'),
|
|
-value => $self->session->form->process("address") || $u->profileField('homeAddress')
|
|
);
|
|
$f->text(
|
|
-name => 'city',
|
|
-label => $i18n->get('city'),
|
|
-value => $self->session->form->process("city") || $u->profileField('homeCity')
|
|
);
|
|
$f->text(
|
|
-name => 'state',
|
|
-label => $i18n->get('state'),
|
|
-value => $self->session->form->process("state") || $u->profileField('homeState')
|
|
);
|
|
$f->zipcode(
|
|
-name => 'zipcode',
|
|
-label => $i18n->get('zipcode'),
|
|
-value => $self->session->form->process("zipcode") || $u->profileField('homeZip')
|
|
);
|
|
$f->country(
|
|
-name=>"country",
|
|
-label=>$i18n->get("country"),
|
|
-value=>($self->session->form->process("country",'country') || $u->profileField("homeCountry") || 'United States')
|
|
);
|
|
$f->phone(
|
|
-name=>"phone",
|
|
-label=>$i18n->get("phone"),
|
|
-defaultValue=>$u->profileField("homePhone"),
|
|
-value=>$self->session->form->process("phone",'phone'),
|
|
);
|
|
$f->email(
|
|
-name => 'email',
|
|
-label => $i18n->get('email'),
|
|
-value => $self->session->form->process("email",'email') || $u->profileField('email')
|
|
);
|
|
|
|
return $f->printRowsOnly;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub configurationForm {
|
|
my ($self, $f, $i18n);
|
|
$self = shift;
|
|
$i18n = WebGUI::International->new($self->session, 'CommercePaymentCash');
|
|
|
|
$f = WebGUI::HTMLForm->new($self->session);
|
|
|
|
$f->textarea(
|
|
-name => $self->prepend('emailMessage'),
|
|
-label => $i18n->get('emailMessage'),
|
|
-value => $self->get('emailMessage')
|
|
);
|
|
|
|
$f->yesNo(
|
|
-name => $self->prepend('completeTransaction'),
|
|
-value => ($self->get('completeTransaction') eq "0" ? 0 : $self->get('completeTransaction') || 1),
|
|
-label => $i18n->get('complete transaction'),
|
|
-hoverHelp => $i18n->get('complete transaction description'),
|
|
);
|
|
|
|
return $self->SUPER::configurationForm($f->printRowsOnly);
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub confirmTransaction {
|
|
|
|
return 0;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
|
|
=head2 init ( namespace )
|
|
|
|
Constructor for the Cash plugin.
|
|
|
|
=head3 session
|
|
|
|
A copy of the session object
|
|
|
|
=head3 namespace
|
|
|
|
The namespace of the plugin.
|
|
|
|
=cut
|
|
sub init {
|
|
my ($class, $self);
|
|
$class = shift;
|
|
my $session = shift;
|
|
$self = $class->SUPER::init($session,'Cash');
|
|
|
|
return $self;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub gatewayId {
|
|
my $self = shift;
|
|
|
|
return $self->get('paymentMethod').":".$self->session->id->generate;
|
|
}
|
|
|
|
|
|
#-------------------------------------------------------------------
|
|
sub errorCode {
|
|
my $self = shift;
|
|
return $self->{_error}->{code};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub name {
|
|
return 'Cash';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub namespace {
|
|
my $self = shift;
|
|
return $self->{_namespace};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub normalTransaction {
|
|
my ($self, $normal);
|
|
$self = shift;
|
|
$normal = shift;
|
|
|
|
if ($normal) {
|
|
my $i18n = WebGUI::International->new($self->session, 'CommercePaymentCash');
|
|
$self->{_transactionParams} = {
|
|
AMT => sprintf('%.2f', $normal->{amount}),
|
|
DESCRIPTION => $normal->{description} || $i18n->get('no description'),
|
|
INVOICENUMBER => $normal->{invoiceNumber},
|
|
ORGID => $normal->{id},
|
|
};
|
|
}
|
|
|
|
if ($self->get('completeTransaction')) {
|
|
$self->{_transaction}->{status} = 'complete';
|
|
}
|
|
else {
|
|
$self->{_transaction}->{status} = 'pending';
|
|
$self->{_error}->{message} = 'Your transaction will be completed upon receipt of payment.';
|
|
$self->{_error}->{code} = 1;
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub shippingCost {
|
|
my $self = shift;
|
|
$self->{_shipping}->{cost} = shift;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub shippingDescription {
|
|
my $self = shift;
|
|
$self->{_shipping}->{description} = shift;
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub supports {
|
|
return {
|
|
single => 1,
|
|
recurring => 0,
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionCompleted {
|
|
my $self = shift;
|
|
return 1 if $self->{_transaction}->{status} eq 'complete';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionError {
|
|
my $self = shift;
|
|
return $self->{_error}->{message};
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub transactionPending {
|
|
my $self = shift;
|
|
return 1 if $self->{_transaction}->{status} eq 'pending';
|
|
}
|
|
|
|
#-------------------------------------------------------------------
|
|
sub validateFormData {
|
|
my ($self, @error, $i18n, $currentYear, $currentMonth);
|
|
$self = shift;
|
|
|
|
$i18n = WebGUI::International->new($self->session,'CommercePaymentCash');
|
|
|
|
push (@error, $i18n->get('invalid firstName')) unless ($self->session->form->process("firstName"));
|
|
push (@error, $i18n->get('invalid lastName')) unless ($self->session->form->process("lastName"));
|
|
push (@error, $i18n->get('invalid address')) unless ($self->session->form->process("address"));
|
|
push (@error, $i18n->get('invalid city')) unless ($self->session->form->process("city"));
|
|
push (@error, $i18n->get('invalid zip')) if ($self->session->form->process("zipcode") eq "" && $self->session->form->process("country") eq "United States");
|
|
push (@error, $i18n->get('invalid email')) unless ($self->session->form->process("email"));
|
|
|
|
unless (@error) {
|
|
$self->{_paymentData} = {
|
|
PAYMENTMETHOD => $self->session->form->process("paymentMethod"),
|
|
};
|
|
|
|
$self->{_userData} = {
|
|
STREET => $self->session->form->process("address"),
|
|
ZIP => $self->session->form->process("zipcode"),
|
|
CITY => $self->session->form->process("city"),
|
|
FIRSTNAME => $self->session->form->process("firstName"),
|
|
LASTNAME => $self->session->form->process("lastName"),
|
|
EMAIL => $self->session->form->process("email"),
|
|
STATE => $self->session->form->process("state"),
|
|
COUNTRY => $self->session->form->process("country"),
|
|
PHONE => $self->session->form->process("phone"),
|
|
};
|
|
|
|
return 0;
|
|
}
|
|
|
|
return \@error;
|
|
}
|
|
|
|
1;
|
|
|