summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-07-18 21:43:36 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-07-18 21:43:36 +0800
commita1ffbd6c0cb3278e4cf99dae021d96587512e5e2 (patch)
tree68203b4a973f64abb2bf21cfa668ceefbf0f9025
parentce6ee07e9f428c7bb75782c1b7bc476fab051eb4 (diff)
parent7954efc7c63f17481996da3fd5002fb1e207adf3 (diff)
Merge branch 'master' into sicepat
-rw-r--r--catalog.cfg24
-rw-r--r--config/pikul_cost.tag20
-rw-r--r--config/pikul_order.tag69
-rw-r--r--etc/log_transaction2
-rw-r--r--etc/receipt.html205
-rw-r--r--include/checkout/shipping_address4
-rw-r--r--include/profiles/profiles.order3
-rw-r--r--pages/flypage.html2
-rw-r--r--pages/ord/checkout.html6
-rw-r--r--products/country.txt242
-rw-r--r--products/ship/shipping.asc16
-rw-r--r--products/variable.txt3
12 files changed, 565 insertions, 31 deletions
diff --git a/catalog.cfg b/catalog.cfg
index 3dde12d..c368116 100644
--- a/catalog.cfg
+++ b/catalog.cfg
@@ -144,7 +144,7 @@ ImageDir __IMAGE_DIR__/
## Here we pick up the region variables like LEFTONLY_TOP and LEFTONLY_BOTTOM.
##
## Commenting; new variables TOP and BOTTOM will be defined in variable directory.
-## No longer going to need multiple leftright_top, leftonly_top, etc; will be
+## No longer going to need multiple leftright_top, leftonly_top, etc; will be
## defined in "display_class" in each page.
#DirConfig Variable templates/regions
@@ -227,7 +227,7 @@ UserTrack no
# during your testing.
RobotLimit 100
-# We also count the number of accesses from the same IP address. More than
+# We also count the number of accesses from the same IP address. More than
# RobotLimit accesses within a one hour period will cause a Forbidden result.
# Uncomment the following line to change the 1 hour period to 30 minutes.
# Limit ip_session_expire 30
@@ -278,7 +278,7 @@ UserDB default from_plain 1
UserDB default bcrypt_pepper __BCRYPT_PEPPER__
# Set to 1 to make the username and password case-insensitive
-UserDB default ignore_case 0
+UserDB default ignore_case 1
# Change a field to something that doesn't conflict in MySQL
UserDB default time_field mod_time
@@ -426,11 +426,11 @@ FormIgnore mv_handling
#
#
-# Along these lines further, for better integrity and less chance of a
+# Along these lines further, for better integrity and less chance of a
# user screwing up your order routes:
# Note that __ORDER_ROUTES__ is empty by default, default Route "default"
# is used with cascades
-FormIgnore mv_order_route
+FormIgnore mv_order_route
## This route places the order entry in the database. If you don't
## have an inventory table (or a userdb table for that matter) make
@@ -538,7 +538,7 @@ Profiles include/profiles/*.*
## Sets the default as to whether items are aggregated or ordered
## on separate lines. Can be overridden with mv_separate_items=0 in
## URL or form.
-SeparateItems no
+SeparateItems No
#==========================================================================#
@@ -572,14 +572,14 @@ EOR
AutoModifier pricing:price_group
-#
+#
# If the user is not a dealer (or not logged in) then pricing just comes
# from "price". Any quantity discounts will be set in the qN fields in the
# database, and are separate from dealer quantity discounts.
-#
+#
Profile dealer <<EOR
-{
+{
CommonAdjust => <<EOF,
pricing:w5,w10:,
@@ -593,7 +593,7 @@ EOF
EOR
Profile distributor <<EOR
-{
+{
CommonAdjust => <<EOF,
pricing:w5,w10:,
@@ -609,7 +609,7 @@ EOR
## This should match the default direct setting below this paragraph
Profile default CommonAdjust "pricing:q5,q10 ;:sale_price, ;:price, ;$, :related, ==:options"
-Profile default NonTaxableField
+Profile default NonTaxableField
Profile default PriceField 0
CommonAdjust pricing:q5,q10 ;:sale_price, ;:price, ;$, :related, ==:options
@@ -758,4 +758,4 @@ Jobs log __LOGDIR__/jobs.log
Jobs base_directory etc/jobs
Variable PIKUL_ANTERAJA 0
-Variable PIKUL_ANTERAJA 1
+Variable PIKUL_SICEPAT 1
diff --git a/config/pikul_cost.tag b/config/pikul_cost.tag
index bc0444f..f885c12 100644
--- a/config/pikul_cost.tag
+++ b/config/pikul_cost.tag
@@ -1,26 +1,34 @@
-UserTag pikul_cost Order company origin district city province weight service
+UserTag pikul_cost Order company service district city province weight
UserTag pikul_cost Routine <<EOR
sub {
- my ($company, $origin, $district, $city, $province, $weight, $service) = @_;
- my (@provisions, $table);
+ my ($company, $service, $district, $city, $province, $weight) = @_;
+ my (@provisions, $origin, $table);
if ($company == $::Variable->{PIKUL_ANTERAJA}) {
@provisions = (
"$Global::Variable->{ANTERAJA_BASE_PATH}",
"$Global::Variable->{ANTERAJA_ACCESS_KEY_ID}",
"$Global::Variable->{ANTERAJA_SECRET_ACCESS_KEY}"
);
+ $origin = $::Variable->{ANTERAJA_ORIGIN};
$table = 'anteraja';
} elsif ($company == $::Variable->{PIKUL_SICEPAT}) {
@provisions = (
"$Global::Variable->{SICEPAT_API_KEY}"
);
+ $origin = $::Variable->{SICEPAT_ORIGIN};
$table = 'sicepat_destination';
}
use Pikul;
Pikul::init($company, \@provisions);
- my $cost = Pikul::cost($origin, $Tag->query({sql => "SELECT code FROM $table WHERE \
- district='$district' AND city='$city' AND province='$province'",
- wantarray => 1})->[0]->[0] || '', $weight, $service);
+ my $cost = Pikul::cost(
+ $origin,
+ $Tag->query({
+ sql => "SELECT code FROM $table WHERE district='$district' AND \
+ city='$city' AND province='$province'",
+ wantarray => 1
+ })->[0]->[0] || '',
+ $weight,
+ $service);
Pikul::cleanup();
return $cost;
}
diff --git a/config/pikul_order.tag b/config/pikul_order.tag
new file mode 100644
index 0000000..8e955ad
--- /dev/null
+++ b/config/pikul_order.tag
@@ -0,0 +1,69 @@
+UserTag pikul_order Order order_number
+UserTag pikul_order Routine <<EOR
+sub {
+ my $order_number = shift;
+ my ($shipmode, $nitems, $subtotal, $fname, $lname, $address1, $address2, $city, $state, $zip,
+ $phone_day)
+ = @{$Tag->query({
+ sql => "SELECT shipmode,nitems,subtotal,fname,lname,address1,address2,city,state,zip,\
+ phone_day FROM transactions WHERE code='$order_number'",
+ wantarray => 1
+ })->[0]};
+ my @parts = split(/ /, $shipmode, 2);
+ my ($table, $service) = split(/_/, shift @parts);
+ my ($company, @provisions, $origin);
+ if (substr($table, 0, 8) eq 'anteraja') {
+ $company = $::Variable->{PIKUL_ANTERAJA};
+ @provisions = (
+ "$Global::Variable->{ANTERAJA_BASE_PATH}",
+ "$Global::Variable->{ANTERAJA_ACCESS_KEY_ID}",
+ "$Global::Variable->{ANTERAJA_SECRET_ACCESS_KEY}",
+ "$Global::Variable->{ANTERAJA_PREFIX}"
+ );
+ $origin = "$::Variable->{ANTERAJA_ORIGIN}";
+ } elsif (substr($table, 0, 7) eq 'sicepat') {
+ $company = $::Variable->{PIKUL_SICEPAT};
+ @provisions = (
+ "$Global::Variable->{SICEPAT_API_KEY}"
+ );
+ $origin = "$::Variable->{SICEPAT_ORIGIN}";
+ $table .= '_destination';
+ }
+ my @items = @{$Tag->query({sql => "SELECT sku,quantity FROM orderline WHERE \
+ order_number='$order_number'",
+ wantarray => 1
+ })};
+ for my $item (@items) {
+ ($item->[2], $item->[3], $item->[4]) = @{$Tag->query({
+ sql => "SELECT description,price,weight FROM products WHERE sku='$item->[0]'",
+ wantarray => 1
+ })->[0]};
+ }
+ use Pikul;
+ Pikul::init($company, \@provisions);
+ my $tracking_number = Pikul::order(
+ $order_number,
+ $service,
+ "$::Variable->{COMPANY}",
+ "$::Variable->{PHONE}",
+ $origin,
+ "$::Variable->{ADDRESS}",
+ "$::Variable->{POSTAL_CODE}",
+ "$fname $lname",
+ $phone_day,
+ $Tag->query({sql => "SELECT code FROM $table WHERE district='$address2' AND city='$city' \
+ AND province='$state'",
+ wantarray => 1
+ })->[0]->[0],
+ $address1,
+ $zip,
+ $nitems,
+ \@items,
+ $subtotal
+ );
+ $Tag->query({sql => "UPDATE transactions SET tracking_number='$tracking_number' WHERE \
+ code='$order_number'"});
+ Pikul::cleanup();
+ return $tracking_number;
+}
+EOR
diff --git a/etc/log_transaction b/etc/log_transaction
index 5cb8294..a78a07a 100644
--- a/etc/log_transaction
+++ b/etc/log_transaction
@@ -376,7 +376,7 @@ company: [value filter=strip name=company]
address1: [value filter=strip name=address1]
address2: [value filter=strip name=address2]
city: [value filter=strip name=city]
-state: [value name=state filter="strip uc"]
+state: [value name=state filter=strip]
zip: [value name=zip filter=word]
country: [value country]
email: [value name=email filter=strip]
diff --git a/etc/receipt.html b/etc/receipt.html
new file mode 100644
index 0000000..e94b584
--- /dev/null
+++ b/etc/receipt.html
@@ -0,0 +1,205 @@
+[tmp page_title]__COMPANY__ -- [L]Receipt[/L][/tmp]
+[tmpn display_class]noleft[/tmpn]
+
+@_TOP_@
+<!-- BEGIN CONTENT -->
+
+<h1>[msg arg="__COMPANY__"]Thank you for shopping at %s[/msg]</h1>
+<p class="well well-small lead">[msg arg="<strong>[value mv_order_number]</strong>"]Your Order Number is %s[/msg]</p>
+
+<p class="well well-small lead">[msg arg="<strong>[pikul_order order_number='[value mv_order_number]']</strong>"]Your Tracking Number is %s[/msg]</p>
+
+<p>[L]Your order is being electronically processed and will be shipped soon.[/L]</p>
+
+<ul>
+[if value email_copy]
+ <li>[msg arg="<b>[value email]</b>"]A copy of this receipt has been emailed to %s[/msg]</li>
+ <li>[L]You will receive an email with tracking information when your order is shipped[/L]</li>
+[/if]
+ <li>[msg arg.0='<a href="[area contact]">' arg.1='</a>']Should you have any questions about your order, %splease feel free to contact us%s[/msg]</li>
+</ul>
+
+<a href="[area ]" class="btn btn-large btn-primary" style="margin:13px 0 10px">[L]Continue Shopping[/L] <span class="icon icon-white icon-arrow-right"></span></a>
+
+<hr>
+
+<h3>[L]Order Details[/L]</h3>
+
+<table class="table-condensed">
+<tr>
+ <th style="text-align:right">[L]Order Date[/L]:</th>
+ <td colspan=3>[time]%b %e, %Y[/time]</td>
+</tr>
+<tr>
+ <th style="text-align:right">[L]Order #[/L]:</th>
+ <td colspan=3>[value mv_order_number]</td>
+</tr>
+<tr>
+ <th style="text-align:right">[L]Payment Method[/L]:</th>
+ <td colspan=3>[value mv_payment]</td>
+</tr>
+<tr>
+ <th style="text-align:right">[L]Shipping Method[/L]:</th>
+ <td colspan=3>
+ [shipping_desc]
+ </td>
+</tr>
+[if value mv_handling]
+<tr>
+ <th style="text-align:right">[L]Handling Charge[/L]:</th>
+ <td colspan=3>
+ [loop list="[value mv_handling]"]
+ [loop-change 1]
+ [condition]1[/condition]
+ [else]<BR>[/else]
+ [/loop-change 1]
+ [either][shipping_desc mode="[loop-code]"][or][L]CHARGED[/L][/either]
+ [/loop]
+ </td>
+</tr>
+[/if]
+<tr>
+ <th style="text-align:right;vertical-align:top">[L]Shipping Address[/L]:</th>
+ <td style="vertical-align:top">
+ [value fname] [value lname]<br>
+ [if value company][value company]<br>[/if]
+ [value address1]<br>
+ [if value address2][value address2]<br>[/if]
+ [value city], [value state] [value zip]<br>
+ [value country]<br>
+ [value phone_day]<br>
+ [value email]
+ </td>
+ <th style="text-align:right;vertical-align:top;padding-left:4em">[L]Billing Address[/L]:</th>
+ <td style="vertical-align:top">
+ [if value mv_same_billing]
+ ([L]same as shipping[/L])
+ [else]
+ [value b_fname] [value b_lname]<br>
+ [value b_address1]<br>
+ [if value b_address2][value b_address2]<br>[/if]
+ [value b_city], [value b_state] [value b_zip]<br>
+ [value b_country]<br>
+ [value phone_day]<br>
+ [value email]
+ [/else]
+ [/if]
+ </td>
+</tr>
+</table>
+
+[comment] Handle downloadables [/comment]
+[perl products]
+ sub get_download {
+ if (! $Scratch->{download_present}) {
+ return '(<B>Must pay by credit card to download now.)</B>';
+ }
+ my $sku = shift;
+ return '' unless tag_data('products', 'download', $sku);
+ my $loc = tag_data('products', 'dl_location', $sku);
+ my $save = delete $Scratch->{mv_add_dot_html};
+ my $url = $Tag->area( {
+ href => "deliver/$loc",
+ no_session_id => 1,
+ no_count => 1,
+ arg => $sku,
+ form => $Scratch->{mv_autocreate},
+ } );
+ $Scratch->{mv_add_dot_html} = $save if $save;
+ return qq{<BR><A HREF="$url"><IMG border=0 SRC="download.png"></A>};
+ }
+ return;
+[/perl]
+
+<br>
+<table class="table-condensed table-striped" width="100%">
+<tr class="well well-small small muted">
+ <th colspan=2 style="text-align:left">[L]Item Description[/L]</th>
+ <th width="10%" style="text-align:right">[L]Each[/L]&nbsp;</th>
+ <th width="10%">[L]Quantity[/L]</th>
+ <th width="10%" style="text-align:right">[L]Total[/L]&nbsp;&nbsp;</th>
+</tr>
+[item-list]
+ <tr>
+ <td style="width:75px;text-align:center">
+ [image sku="[item-code]" makesize="75x75" default="../thumb.gif" imagesubdir=items]
+ </td>
+ <td style="vertical-align:top;padding-top:8px">
+ <div><b>[item-description]</b></div>
+ [item-sku]
+ [if-modifier size]<BR>SIZE-->[item-modifier size][/if-modifier][if-modifier color] COLOR-->[item-modifier color][/if-modifier]
+ [if-item-field option_type]
+ <br>[item-options label=1 bold=1 price=1 type=display]
+ [/if-item-field]
+ [if-item-modifier mv_ad]
+ <br>
+ <b>SHIP TO:</b>
+ <pre>[item-modifier mv_ad]</pre>
+ [/if-item-modifier]
+ </td>
+ <td style="vertical-align:top;padding-top:8px;text-align:right">[item-discount-price]</td>
+ <td style="vertical-align:top;padding-top:8px;text-align:center">[item-quantity]</td>
+ <td style="vertical-align:top;padding-top:8px;text-align:right">[item-discount-subtotal]</td>
+ </tr>
+ [if-item-param pay_cert_code]
+ <tr>
+ <td colspan="5">
+ [tmp pc][area href="cert/[item-param pay_cert_code]/[item-param pay_cert_check]" no-session=1][/tmp]
+ <b style="color:red">Give this URL to pass on the gift certificate:</b> <a href="[scratch pc]">[scratch pc]</a>
+ </td>
+ </tr>
+ [/if-item-param]
+ [if-item-field download]
+ <tr>
+ <td colspan=5>
+ [calc]get_download('[item-code]')[/calc]
+ </td>
+ </tr>
+ [/if-item-field]
+[/item-list]
+
+<tr>
+ <td colspan=4 style="text-align:right">SUBTOTAL</td>
+ <td style="text-align:right">[subtotal]</td>
+</tr>
+<tr>
+ <td colspan=4 style="text-align:right">SALES TAX</td>
+ <td style="text-align:right">[salestax]</td>
+</tr>
+[if value mv_shipmode]
+<tr>
+ <td colspan=4 style="text-align:right">SHIPPING</td>
+ <td style="text-align:right">[shipping]</td>
+</tr>
+[/if]
+[if value mv_handling]
+<tr>
+ <td colspan=4 style="text-align:right">HANDLING</td>
+ <td style="text-align:right">[handling]</td>
+</tr>
+[/if]
+<tr>
+ <th colspan=4 style="text-align:right">TOTAL</th>
+ <th style="text-align:right">[total-cost]</th>
+</tr>
+[if scratch pay_cert_total]
+<tr>
+ <th colspan=4 style="text-align:right">GIFT CERTIFICATE</th>
+ <td style="text-align:right">[currency][scratch pay_cert_total][/currency]</td>
+</tr>
+<tr>
+ <th colspan=4 style="text-align:right">CHARGED</th>
+ <th style="text-align:right">[currency][scratch tmp_remaining][/currency]</th>
+</tr>
+[/if]
+</table>
+
+[if value gift_note]
+ <p><b>Note for Gift:</b> [value gift_note]</p>
+[/if]
+
+<br>
+<p class="text-info"><i>[L RECEIPT_PRINT]Please print this receipt for your records. Thank you for your order![/L]</i></p>
+
+<!-- END CONTENT -->
+@_BOTTOM_@
diff --git a/include/checkout/shipping_address b/include/checkout/shipping_address
index 2a6c2d1..1b23086 100644
--- a/include/checkout/shipping_address
+++ b/include/checkout/shipping_address
@@ -43,12 +43,12 @@ return $options;
</div>
<div class="form-group col-md-8">
<label class="form-label" for="district_shipping">[L]District[/L]</label>
- <select name="address3" id="district_shipping" class="form-control" onchange="this.form.submit()">
+ <select name="address2" id="district_shipping" class="form-control" onchange="this.form.submit()">
<option value="-- [L]Please select[/L] --">-- [L]Please select[/L] --</option>[perl products]
my $options = '';
for my $district (@{$Tag->query({sql => "SELECT district FROM anteraja WHERE city='" . $Tag->value({keep => 1, filter => encode_entities, name => 'city'}) . "' GROUP BY district ORDER BY district"})}) {
$options .= qq(
- <option value="$district->[0]") . ($district->[0] eq $Tag->value({keep => 1, filter => encode_entities, name => 'address3'}) ? ' selected' : '') . ">$district->[0]</option>";
+ <option value="$district->[0]") . ($district->[0] eq $Tag->value({keep => 1, filter => encode_entities, name => 'address2'}) ? ' selected' : '') . ">$district->[0]</option>";
}
return $options;
[/perl]
diff --git a/include/profiles/profiles.order b/include/profiles/profiles.order
index 10c9726..aff4db9 100644
--- a/include/profiles/profiles.order
+++ b/include/profiles/profiles.order
@@ -2,9 +2,10 @@ __NAME__ bank_transfer
fname=required
address1=required
-address3=required
+address2=required
city=required
state=required
+zip=required
&fatal=yes
&final=yes
&set = mv_payment Bank transfer
diff --git a/pages/flypage.html b/pages/flypage.html
index 976ef6f..192b5a5 100644
--- a/pages/flypage.html
+++ b/pages/flypage.html
@@ -9,7 +9,7 @@
<h5 class="text-primary">[item-price]</h5>
<p class="text-muted text-monospace">[item-field prod_group] • [item-field category]</p>
</div>[fly-list code="[data session arg]"]
- <form class="col" action="[area href="[if-item-field option_type][item-code][else]ord/checkout[/else][/if-item-field]"]" method="POST">
+ <form class="col" action="[area href="[if-item-field option_type][item-code][else]ord/basket[/else][/if-item-field]"]" method="POST">
<input type="hidden" name="mv_action" value="refresh">
<input type="hidden" name="mv_order_item" value="[item-code]">
<input type="hidden" name="mv_order_quantity" value="1">
diff --git a/pages/ord/checkout.html b/pages/ord/checkout.html
index 27d3ebf..247c28a 100644
--- a/pages/ord/checkout.html
+++ b/pages/ord/checkout.html
@@ -11,7 +11,7 @@
<div class="py-2">
<h1>[L]Checkout form[/L]</h1>
[if session logged_in]
- <p class="lead">[L]Please verify the information below and click the <b>'Place Order'</b> button to process your order.[/L]</p>
+ <p class="lead">[L]Please verify the information below and click the <b>'Place Order'</b> button to process your order.[/L]</p>[else]
[include include/checkout/login_form][/else][/if][if !variable NO_TAX_POPUP]
[include include/checkout/tax_popup][/if]
[edisplay show_label=1 show_var=0 keep=1]
@@ -85,8 +85,8 @@
<div class="block-body">
<div class="row">
<div class="form-group col-md-6 d-flex align-items-center">
- <input type="radio" name="mv_shipmode" id="option0" value="cpa" checked/>
- <label class="ml-3" for="option0">
+ [shipping widget="radio" extra='id="ship_widget" onchange="this.form.submit()"']
+ <label class="ml-3" for="ship_widget">
<strong class="d-block text-uppercase mb-2">[shipping-desc]</strong>
<span class="text-muted text-sm">
[L]Get it right on next day - fastest option possible.[/L]
diff --git a/products/country.txt b/products/country.txt
new file mode 100644
index 0000000..5ba8992
--- /dev/null
+++ b/products/country.txt
@@ -0,0 +1,242 @@
+code sorder region selector shipmodes name iso isonum tax no_state
+AF 6 Asia AF surf_pp air_pp Afghanistan AFG 004
+AX 5 Europe AX surf_pp air_pp Aland Islands ALA 248
+AL 5 Europe AL surf_pp air_pp Albania ALB 008
+DZ 8 Africa DZ surf_pp air_pp Algeria DZA 012
+AS 7 Oceania AS American Samoa ASM 016
+AD 5 Europe AD surf_pp air_pp Andorra AND 020
+AO 8 Africa AO surf_pp air_pp Angola AGO 024
+AI 0 North America AI surf_pp air_pp Anguilla AIA 660
+AQ 9 Antarctica AQ Antarctica ATA 010
+AG 0 North America AG surf_pp air_pp Antigua and Barbuda ATG 028
+AR 4 South America AR surf_pp air_pp Argentina ARG 032
+AM 5 Europe AM surf_pp air_pp Armenia ARM 051
+AW 0 North America AW surf_pp air_pp Aruba ABW 533
+AU 7 Oceania AU surf_pp air_pp Australia AUS 036
+AT 5 Europe AT surf_pp air_pp Austria AUT 040
+AZ 5 Europe AZ surf_pp air_pp Azerbaijan AZE 031
+BS 0 North America BS surf_pp air_pp Bahamas BHS 044
+BH 6 Asia BH surf_pp air_pp Bahrain BHR 048
+BD 6 Asia BD surf_pp air_pp Bangladesh BGD 050
+BB 0 North America BB surf_pp air_pp Barbados BRB 052
+BY 5 Europe BY surf_pp air_pp Belarus BLR 112
+BE 5 Europe BE surf_pp air_pp Belgium BEL 056
+BZ 0 North America BZ surf_pp air_pp Belize BLZ 084
+BJ 8 Africa BJ surf_pp air_pp Benin BEN 204
+BM 0 North America BM surf_pp air_pp Bermuda BMU 060
+BT 6 Asia BT surf_pp air_pp Bhutan BTN 064
+BO 4 South America BO surf_pp air_pp Bolivia BOL 068
+BA 5 Europe BA surf_pp air_pp Bosnia And Herzegowina BIH 070
+BW 8 Africa BW surf_pp air_pp Botswana BWA 072
+BV 4 South America BV Bouvet Island BVT 074
+BR 4 South America BR surf_pp air_pp Brazil BRA 076
+IO 6 Asia IO British Indian Ocean Territory IOT 086
+BN 6 Asia BN surf_pp air_pp Brunei Darussalam BRN 096
+BG 5 Europe BG surf_pp air_pp Bulgaria BGR 100
+BF 8 Africa BF surf_pp air_pp Burkina Faso BFA 854
+BI 8 Africa BI surf_pp air_pp Burundi BDI 108
+KH 6 Asia KH Cambodia KHM 116
+CM 8 Africa CM surf_pp air_pp Cameroon CMR 120
+CA 1 North America CA surf_pp air_pp Canada CAN 124
+CV 8 Africa CV surf_pp air_pp Cape Verde CPV 132
+KY 0 North America KY surf_pp air_pp Cayman Islands CYM 136
+CF 8 Africa CF surf_pp air_pp Central African Republic CAF 140
+TD 8 Africa TD surf_pp air_pp Chad TCD 148
+CL 4 South America CL surf_pp air_pp Chile CHL 152
+CN 6 Asia CN surf_pp air_pp China CHN 156
+CX 7 Oceania CX Christmas Island CXR 162
+CC 7 Oceania CC Cocos (Keeling) Islands CCK 166
+CO 4 South America CO surf_pp air_pp Colombia COL 170
+KM 8 Africa KM surf_pp air_pp Comoros COM 174
+CG 8 Africa CG surf_pp air_pp Congo COG 178
+CD 8 Africa CD Congo, The Democratic Republic Of The COD 180
+CK 7 Oceania CK Cook Islands COK 184
+CR 0 North America CR surf_pp air_pp Costa Rica CRI 188
+CI 8 Africa CI surf_pp air_pp Cote d'Ivoire (Ivory Coast) CIV 384
+HR 5 Europe HR surf_pp air_pp Croatia HRV 191
+CU 0 North America CU Cuba CUB 192
+CY 5 Europe CY surf_pp air_pp Cyprus CYP 196
+CZ 5 Europe CZ surf_pp air_pp Czech Republic CZE 203
+DK 5 Europe DK surf_pp air_pp Denmark DNK 208
+DJ 8 Africa DJ surf_pp air_pp Djibouti DJI 262
+DM 0 North America DM surf_pp air_pp Dominica DMA 212
+DO 0 North America DO surf_pp air_pp Dominican Republic DOM 214
+EC 4 South America EC surf_pp air_pp Ecuador ECU 218
+EG 8 Africa EG surf_pp air_pp Egypt EGY 818
+SV 0 North America SV surf_pp air_pp El Salvador SLV 222
+GQ 8 Africa GQ surf_pp air_pp Equatorial Guinea GNQ 226
+ER 8 Africa ER surf_pp air_pp Eritrea ERI 232
+EE 5 Europe EE surf_pp air_pp Estonia EST 233
+ET 8 Africa ET surf_pp air_pp Ethiopia ETH 231
+FK 4 South America FK Falkland Islands (Malvinas) FLK 238
+FO 5 Europe FO surf_pp air_pp Faroe Islands FRO 234
+FJ 7 Oceania FJ surf_pp air_pp Fiji FJI 242
+FI 5 Europe FI surf_pp air_pp Finland FIN 246
+FR 5 Europe FR surf_pp air_pp France FRA 250
+GF 4 South America GF surf_pp air_pp French Guiana GUF 254
+PF 7 Oceania PF French Polynesia PYF 258
+TF 9 Antarctica TF French Southern Territories ATF 260
+GA 8 Africa GA surf_pp air_pp Gabon GAB 266
+GM 8 Africa GM surf_pp air_pp Gambia GMB 270
+GE 5 Europe GE surf_pp air_pp Georgia GEO 268
+DE 5 Europe DE surf_pp air_pp Germany DEU 276
+GH 8 Africa GH surf_pp air_pp Ghana GHA 288
+GI 5 Europe GI surf_pp air_pp Gibraltar GIB 292
+GR 5 Europe GR surf_pp air_pp Greece GRC 300
+GL 0 North America GL surf_pp air_pp Greenland GRL 304
+GD 0 North America GD surf_pp air_pp Grenada GRD 308
+GP 0 North America GP surf_pp air_pp Guadeloupe GLP 312
+GU 7 Oceania GU Guam GUM 316
+GT 0 North America GT surf_pp air_pp Guatemala GTM 320
+GN 8 Africa GN surf_pp air_pp Guinea GIN 324
+GW 8 Africa GW surf_pp air_pp Guinea-Bissau GNB 624
+GY 4 South America GY surf_pp air_pp Guyana GUY 328
+HT 0 North America HT surf_pp air_pp Haiti HTI 332
+HM 7 Oceania HM Heard Island And Mc Donald Islands HMD 334
+VA 5 Europe VA surf_pp air_pp Holy See (Vatican City State) VAT 336
+HN 0 North America HN surf_pp air_pp Honduras HND 340
+HK 6 Asia HK surf_pp air_pp Hong Kong HKG 344
+HU 5 Europe HU surf_pp air_pp Hungary HUN 348
+IS 5 Europe IS surf_pp air_pp Iceland ISL 352
+IN 6 Asia IN surf_pp air_pp India IND 356
+ID 6 Asia ID anteraja_REG anteraja_ND anteraja_SD Indonesia IDN 360
+IR 6 Asia IR surf_pp air_pp Iran, Islamic Republic Of IRN 364
+IQ 6 Asia IQ Iraq IRQ 368
+IE 5 Europe IE Ireland IRL 372
+IL 6 Asia IL surf_pp air_pp Israel ISR 376
+IT 5 Europe IT surf_pp air_pp Italy ITA 380
+JM 0 North America JM surf_pp air_pp Jamaica JAM 388
+JP 6 Asia JP surf_pp air_pp Japan JPN 392
+JO 6 Asia JO surf_pp air_pp Jordan JOR 400
+KZ 6 Asia KZ surf_pp air_pp Kazakhstan KAZ 398
+KE 8 Africa KE surf_pp air_pp Kenya KEN 404
+KI 7 Oceania KI surf_pp air_pp Kiribati KIR 296
+KP 6 Asia KP Korea, Democratic People's Republic Of PRK 408
+KR 6 Asia KR surf_pp air_pp Korea, Republic of KOR 410
+KW 6 Asia KW surf_pp air_pp Kuwait KWT 414
+KG 6 Asia KG Kyrgyzstan KGZ 417
+LA 6 Asia LA surf_pp air_pp Lao People's Democratic Republic LAO 418
+LV 5 Europe LV Latvia LVA 428
+LB 6 Asia LB surf_pp air_pp Lebanon LBN 422
+LS 8 Africa LS surf_pp air_pp Lesotho LSO 426
+LR 8 Africa LR Liberia LBR 430
+LY 8 Africa LY surf_pp air_pp Libyan Arab Jamahiriya LBY 434
+LI 5 Europe LI surf_pp air_pp Liechtenstein LIE 438
+LT 5 Europe LT surf_pp air_pp Lithuania LTU 440
+LU 5 Europe LU surf_pp air_pp Luxembourg LUX 442
+MO 6 Asia MO surf_pp air_pp Macao MAC 446
+MK 5 Europe MK surf_pp air_pp Macedonia, The Former Yugoslav Republic Of MKD 807
+MG 8 Africa MG surf_pp air_pp Madagascar MDG 450
+MW 8 Africa MW surf_pp air_pp Malawi MWI 454
+MY 6 Asia MY Malaysia MYS 458
+MV 6 Asia MV surf_pp air_pp Maldives MDV 462
+ML 8 Africa ML surf_pp air_pp Mali MLI 466
+MT 5 Europe MT surf_pp air_pp Malta MLT 470
+MH 7 Oceania MH Marshall Islands MHL 584
+MQ 0 North America MQ surf_pp air_pp Martinique MTQ 474
+MR 8 Africa MR surf_pp air_pp Mauritania MRT 478
+MU 8 Africa MU surf_pp air_pp Mauritius MUS 480
+YT 8 Africa YT Mayotte MYT 175
+MX 1 North America MX surf_pp air_pp Mexico MEX 484
+FM 7 Oceania FM Micronesia, Federated States Of FSM 583
+MD 5 Europe MD Moldova, Republic Of MDA 498
+MC 5 Europe MC Monaco MCO 492
+MN 6 Asia MN Mongolia MNG 496
+ME 5 Europe ME surf_pp air_pp Montenegro MNE 499
+MS 0 North America MS surf_pp air_pp Montserrat MSR 500
+MA 8 Africa MA surf_pp air_pp Morocco MAR 504
+MZ 8 Africa MZ surf_pp air_pp Mozambique MOZ 508
+MM 6 Asia MM surf_pp air_pp Myanmar MMR 104
+NA 8 Africa NA surf_pp air_pp Namibia NAM 516
+NR 7 Oceania NR surf_pp air_pp Nauru NRU 520
+NP 6 Asia NP surf_pp air_pp Nepal NPL 524
+NL 5 Europe NL surf_pp air_pp Netherlands NLD 528
+AN 0 North America AN surf_pp air_pp Netherlands Antilles ANT 530
+NC 7 Oceania NC surf_pp air_pp New Caledonia NCL 540
+NZ 7 Oceania NZ surf_pp air_pp New Zealand NZL 554
+NI 0 North America NI surf_pp air_pp Nicaragua NIC 558
+NE 8 Africa NE surf_pp air_pp Niger NER 562
+NG 8 Africa NG surf_pp air_pp Nigeria NGA 566
+NU 7 Oceania NU Niue NIU 570
+NF 7 Oceania NF Norfolk Island NFK 574
+MP 7 Oceania MP Northern Mariana Islands MNP 580
+NO 5 Europe NO surf_pp air_pp Norway NOR 578
+OM 6 Asia OM surf_pp air_pp Oman OMN 512
+PK 6 Asia PK surf_pp air_pp Pakistan PAK 586
+PW 7 Oceania PW Palau PLW 585
+PS 6 Asia PS Palestinian Territory, Occupied PSE 275
+PA 0 North America PA surf_pp air_pp Panama PAN 591
+PG 7 Oceania PG surf_pp air_pp Papua New Guinea PNG 598
+PY 4 South America PY surf_pp air_pp Paraguay PRY 600
+PE 4 South America PE surf_pp air_pp Peru PER 604
+PH 6 Asia PH surf_pp air_pp Philippines PHL 608
+PN 7 Oceania PN surf_pp air_pp Pitcairn PCN 612
+PL 5 Europe PL surf_pp air_pp Poland POL 616
+PT 5 Europe PT surf_pp air_pp Portugal PRT 620
+PR 0 North America PR Puerto Rico PRI 630
+QA 6 Asia QA Qatar QAT 634
+RE 8 Africa RE surf_pp air_pp Reunion REU 638
+RO 5 Europe RO Romania ROM 642
+RU 6 Asia RU Russian Federation RUS 643
+RW 8 Africa RW surf_pp air_pp Rwanda RWA 646
+KN 0 North America KN Saint Kitts And Nevis KNA 659
+SH 8 Africa SH surf_pp air_pp Saint Helena SHN 654
+LC 0 North America LC surf_pp air_pp Saint Lucia LCA 662
+PM 0 North America PM surf_pp air_pp Saint Pierre and Miquelon SPM 666
+VC 0 North America VC surf_pp air_pp Saint Vincent and the Grenadines VCT 670
+WS 7 Oceania WS surf_pp air_pp Samoa WSM 882
+SM 5 Europe SM San Marino SMR 674
+ST 8 Africa ST surf_pp air_pp Sao Tome and Principe STP 678
+SA 6 Asia SA surf_pp air_pp Saudi Arabia SAU 682
+SN 8 Africa SN surf_pp air_pp Senegal SEN 686
+RS 5 Europe RS surf_pp air_pp Serbia SRB 688
+SC 8 Africa SC surf_pp air_pp Seychelles SYC 690
+SL 8 Africa SL surf_pp air_pp Sierra Leone SLE 694
+SG 6 Asia SG surf_pp air_pp Singapore SGP 702
+SK 5 Europe SK surf_pp air_pp Slovakia SVK 703
+SI 5 Europe SI surf_pp air_pp Slovenia SVN 705
+SB 7 Oceania SB surf_pp air_pp Solomon Islands SLB 090
+SO 8 Africa SO Somalia SOM 706
+ZA 8 Africa ZA surf_pp air_pp South Africa ZAF 710
+GS 4 South America GS South Georgia And The South Sandwich Islands SGS 239
+ES 5 Europe ES surf_pp air_pp Spain ESP 724
+LK 6 Asia LK surf_pp air_pp Sri Lanka LKA 144
+SD 8 Africa SD surf_pp air_pp Sudan SDN 736
+SR 4 South America SR surf_pp air_pp Suriname SUR 740
+SJ 5 Europe SJ Svalbard And Jan Mayen SJM 744
+SZ 8 Africa SZ surf_pp air_pp Swaziland SWZ 748
+SE 5 Europe SE surf_pp air_pp Sweden SWE 752
+CH 5 Europe CH surf_pp air_pp Switzerland CHE 756
+SY 6 Asia SY surf_pp air_pp Syrian Arab Republic SYR 760
+TW 6 Asia TW surf_pp air_pp Taiwan TWN 158
+TJ 6 Asia TJ Tajikistan TJK 762
+TZ 8 Africa TZ surf_pp air_pp Tanzania, United Republic Of TZA 834
+TH 6 Asia TH surf_pp air_pp Thailand THA 764
+TL 6 Asia TL surf_pp air_pp Timor-Leste THA 764
+TG 8 Africa TG surf_pp air_pp Togo TGO 768
+TK 7 Oceania TK Tokelau TKL 772
+TO 7 Oceania TO surf_pp air_pp Tonga TON 776
+TT 0 North America TT surf_pp air_pp Trinidad and Tobago TTO 780
+TN 8 Africa TN surf_pp air_pp Tunisia TUN 788
+TR 6 Asia TR surf_pp air_pp Turkey TUR 792
+TM 6 Asia TM Turkmenistan TKM 795
+TC 0 North America TC surf_pp air_pp Turks and Caicos Islands TCA 796
+TV 7 Oceania TV surf_pp air_pp Tuvalu TUV 798
+UG 8 Africa UG surf_pp air_pp Uganda UGA 800
+UA 5 Europe UA surf_pp air_pp Ukraine UKR 804
+AE 6 Asia AE surf_pp air_pp United Arab Emirates ARE 784
+UK 5 Europe UK surf_pp air_pp United Kingdom
+US 0 North America US free_or_upsg upsb upsr pm United States USA 840
+UM 0 North America UM United States Minor Outlying Islands UMI 581
+UY 4 South America UY surf_pp air_pp Uruguay URY 858
+UZ 6 Asia UZ Uzbekistan UZB 860
+VU 7 Oceania VU surf_pp air_pp Vanuatu VUT 548
+VE 4 South America VE surf_pp air_pp Venezuela VEN 862
+VN 6 Asia VN surf_pp air_pp Viet Nam VNM 704
+VG 0 North America VG surf_pp air_pp Virgin Islands, British VGB 092
+VI 0 North America VI Virgin Islands, U.S. VIR 850
+WF 7 Oceania WF surf_pp air_pp Wallis and Futuna WLF 876
+EH 8 Africa EH Western Sahara ESH 732
+YE 6 Asia YE surf_pp air_pp Yemen YEM 887
+ZM 8 Africa ZM surf_pp air_pp Zambia ZMB 894
+ZW 8 Africa ZW surf_pp air_pp Zimbabwe ZWE 716
diff --git a/products/ship/shipping.asc b/products/ship/shipping.asc
index 238f819..21e2c54 100644
--- a/products/ship/shipping.asc
+++ b/products/ship/shipping.asc
@@ -1,7 +1,15 @@
-anteraja: Anteraja Regular
+anteraja_REG: Anteraja Regular
crit weight
- cost f [pikul_cost company=0 origin='@_ANTERAJA_ORIGIN_@' district='[evalue address3]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@ service='REG']
+ cost f [pikul_cost company=__PIKUL_ANTERAJA__ service='REG' district='[evalue address2]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@]
-sicepat: SiCepat Regular
+anteraja_ND: Anteraja Next Day
crit weight
- cost f [pikul_cost company=1 origin='@_SICEPAT_ORIGIN_@' district='[evalue address3]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@ service='REG']
+ cost f [pikul_cost company=__PIKUL_ANTERAJA__ service='ND' district='[evalue address2]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@]
+
+anteraja_SD: Anteraja Same Day
+ crit weight
+ cost f [pikul_cost company=__PIKUL_ANTERAJA__ service='SD' district='[evalue address2]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@]
+
+sicepat_REG: SiCepat Regular
+ crit weight
+ cost f [pikul_cost company=__PIKUL_SICEPAT__ service='REG' district='[evalue address2]' city='[evalue city]' province='[evalue state]' weight=@@TOTAL@@]
diff --git a/products/variable.txt b/products/variable.txt
index 1e7e3b0..078c31b 100644
--- a/products/variable.txt
+++ b/products/variable.txt
@@ -64,6 +64,7 @@ PGP_KEY Encryption
PGSQL __MVC_PGSQL__ Database
PHONE (765) 555-1212 Company
POSTAL_ACCEPTED 0 Payment
+POSTAL_CODE 12720 Company
PO_ACCEPTED 1 Payment
PUBLISH_DO_RCS 0 Admin Control
PUBLISH_NO_PAGE_ROOT 0 Admin Control
@@ -78,7 +79,7 @@ SECURE_SERVER https://__MVC_SERVERNAME__ Directories and Paths
SERVER_NAME __MVC_SERVERNAME__ Directories and Paths
SETTLE_TRANSACTION Payment
SHIP_DEFAULT_COUNTRY ID Shipping
-SHIP_DEFAULT_MODE anteraja Shipping
+SHIP_DEFAULT_MODE anteraja_REG Shipping
SHIP_FLAT_DOM_RATE 5 Shipping
SHIP_FLAT_INTL_RATE 10 Shipping
SQLDSN __MVC_SQLDSN__ Database