This repository has been archived by the owner on Dec 19, 2023. It is now read-only.
/
flycat.cfg
182 lines (171 loc) · 4.08 KB
/
flycat.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
GlobalSub <<EOF
sub flycat {
use Vend::FlyCat;
return undef if $Vend::InternalHTTP;
$Vend::Session->{return_value} = Vend::FlyCat::check_items(@_) || undef;
}
EOF
UserTag dv Order field
UserTag dv PosNumber 1
UserTag dv Routine <<EOR
sub {
my $field = shift;
if($field =~ /^\s*[\[_]/) {
$field = Vend::Interpolate::interpolate_html($field);
}
$field =~ s/\s+//g;
return Vend::Data::database_field(
'vendor',
$Vend::Cfg->{Variable}{STORE_ID},
$field,
);
}
EOR
UserTag if-dv Order field
UserTag if-dv PosNumber 1
UserTag if-dv HasEndTag 1
UserTag if-dv Routine <<EOR
sub {
my ($field, $stuff) = @_;
my $reverse = 0;
$field =~ s/^\s*!\s*// and $reverse = 1;
if($field =~ /^\s*[[_]/) {
$field = Vend::Interpolate::interpolate_html($field);
}
$field =~ s/\s+//g;
Vend::Data::database_field(
'vendor',
$Vend::Cfg->{Variable}{STORE_ID},
$field,
)
and
return Vend::Interpolate::pull_if($stuff, $reverse);
return Vend::Interpolate::pull_else($stuff, $reverse);
}
EOR
UserTag ups-query Order mode origin zip weight country
UserTag ups-query Routine <<EOR
sub {
my( $mode, $origin, $zip, $weight, $country) = @_;
BEGIN {
eval {
require Business::UPS;
import Business::UPS;
};
};
$country = uc $country;
$country = undef if $country eq 'US';
#::logGlobal("calling with: " . join("|", $mode, $origin, $zip, $weight, $country));
my ($shipping, $zone, $error) =
getUPS( $mode, $origin, $zip, $weight, $country);
#::logGlobal("received back: " . join("|", $shipping, $zone, $error));
if($error) {
$Vend::Session->{ship_message} .= " $mode: $error";
return 0;
}
return $shipping;
}
EOR
UserTag raw_subtotal Order noformat
UserTag raw_subtotal Routine <<EOF
sub {
my $noformat = shift;
my $save_entire = delete $Vend::Session->{discount}{ENTIRE_ORDER};
my $save_all = delete $Vend::Session->{discount}{ALL_ITEMS};
my $sub = Vend::Interpolate::subtotal();
$Vend::Session->{discount}{ENTIRE_ORDER} = $save_entire
if $save_entire;
$Vend::Session->{discount}{ALL_ITEMS} = $save_all
if $save_all;
return $noformat ? $sub : Vend::Util::currency($sub);
}
EOF
UserTag fcounter Order file
UserTag fcounter Routine <<EOF
sub {
my $file = shift || 'etc/counter';
$file = $Vend::Cfg->{VendRoot} . "/$file"
unless index($file, '/') == 0;
my $ctr = new File::CounterFile $file;
return $ctr->inc();
}
EOF
UserTag mkdir Order dir
UserTag mkdir Routine <<EOR
sub {
my $dir = shift;
my $mask = $Vend::Cfg->{FileCreationMask};
my $xmask = $mask >> 2;
$xmask &= 0111;
$mask = $mask | $xmask;
if (mkdir $dir, $mask) {
return "$dir created.";
}
else {
return "$dir creation failed: $!";
}
}
EOR
UserTag tabbed Interpolate 1
UserTag tabbed HasEndTag 1
UserTag tabbed Order fields
UserTag tabbed Routine <<EOR
sub {
my ($fields, $text) = @_;
$text =~ s/^\s+//;
$text =~ s/\s+$//;
my @fields;
@fields = split /\r?\n/, $text;
if($fields) {
while (scalar @fields < $fields) {
push @fields, '';
}
}
return join "\t", @fields;
}
EOR
UserTag fly-tax PosNumber 1
UserTag fly-tax Order area
UserTag fly-tax AttrAlias area state
UserTag fly-tax Routine <<EOR
sub {
my ($area) = @_;
if(! $area) {
my $zone = $Vend::Cfg->{SalesTax};
while($zone =~ m/(\w+)/g) {
last if $area = $::Values->{$zone};
}
}
return 0 unless $area;
my $rates = $Vend::Cfg->{Variable}{TAXRATE} ||
Vend::Data::database_field(
'vendor',
$Vend::Cfg->{Variable}{STORE_ID},
'tax_rates',
);
my $taxable = $Vend::Cfg->{Variable}{TAXSHIPPING} ||
Vend::Data::database_field(
'vendor',
$Vend::Cfg->{Variable}{STORE_ID},
'tax_shipping',
);
$rates =~ s/^\s+//;
$rates =~ s/\s+$//;
$area =~ s/^\s+//;
$area =~ s/\s+$//;
my (@rates) = split /\s*,\s*/, $rates;
my $rate;
for(@rates) {
my ($k,$v) = split /\s*=\s*/, $_, 2;
next unless "\U$k" eq "\U$area";
$rate = $v;
$rate = $rate / 100 if $rate > 1;
last;
}
return 0 unless $rate;
my $amount = Vend::Interpolate::taxable_amount();
$amount += Vend::Interpolate::shipping()
if $taxable =~ m{(^|[\s,])$area([\s,]|$)}i;
return $amount * $rate;
}
EOR