Code:
my $stmt = qq/INSERT INTO tblOrders / .
$app->sql->insert_fields([qw/chrDeliveryATTN chrCustomerCompany chrCustomerBillingStreetAddress chrCustomerBillingSuburb chrCustomerBillingCity chrCustomerBillingState chrCustomerBillingDistrict chrCustomerBillingCountry chrCustomerBillingPostCode decCustomerAdditionalDiscount fkeyCustomerID fkeyResellerID fkeyUserID chrDeliveryName chrDeliveryStreetAddress chrDeliverySuburb chrDeliveryCity chrDeliveryState chrDeliveryDistrict chrDeliveryCountry chrDeliveryPostCode chrPaymentType chrPaymentBank intPaymentCheckNumber intPaymentAccountNumber intPaymentRoutingNumber chrPaymentInformation chrPaymentCCName chrPaymentCCType intPaymentCCNumber intPaymentExpMonth intPaymentExpYear chrPaymentAuthorization chrOrderStatus decProductTax decOrderShipping decOrderDiscount decOrderSubTotal decOrderTotal decResellerDiscount decParentResellerDiscount decCustomerDiscount fkeyResellerParentID txtOrderComments txtOrderNotes dtOrderCreated tmOrderCreated dtmOrderCreated/]) .
qq/ VALUES / .
$app->sql->insert_values([qw/chrDeliveryATTN chrCustomerCompany chrCustomerBillingStreetAddress chrCustomerBillingSuburb chrCustomerBillingCity chrCustomerBillingState chrCustomerBillingDistrict chrCustomerBillingCountry chrCustomerBillingPostCode decCustomerAdditionalDiscount fkeyCustomerID fkeyResellerID fkeyUserID chrDeliveryName chrDeliveryStreetAddress chrDeliverySuburb chrDeliveryCity chrDeliveryState chrDeliveryDistrict chrDeliveryCountry chrDeliveryPostCode chrPaymentType chrPaymentBank intPaymentCheckNumber intPaymentAccountNumber intPaymentRoutingNumber chrPaymentInformation chrPaymentCCName chrPaymentCCType intPaymentCCNumber intPaymentExpMonth intPaymentExpYear chrPaymentAuthorization chrOrderStatus decProductTax decOrderShipping decOrderDiscount decOrderSubTotal decOrderTotal decResellerDiscount decParentResellerDiscount decCustomerDiscount fkeyResellerParentID txtOrderComments txtOrderNotes dtOrderCreated tmOrderCreated dtmOrderCreated/],$app->query) . ';';
#$app->output($stmt);
my $pkeyOrderID = $app->sql->insert($stmt,"pkeyOrderID","tblOrders");
my $state = $app->query->param('chrDeliveryState');
my $country = $app->query->param('chrDeliveryCountry');
my($taxable,$shipping,$subtotal,$total);
# get order items
my $ifields = [qw/fkeyProductID intOrderItemQuantity decOrderItemPrice decOrderItemOptionsPrice decOrderItemShipping blOrderItemTaxable/];
foreach my $r (@{$idata}){
my @values = ();
foreach my $f (@{$cfields}){
push(@values,$r->{$f});
}
my $istmt = qq/INSERT INTO tblOrderItems / .
$app->sql->insert_fields(["fkeyOrderID",@{$ifields}]) .
qq/ VALUES ("/ . join('","',($pkeyOrderID,@values)) . qq/")/;
#$app->output($istmt);
my $pkeyOrderItemID = $app->sql->insert($istmt,"pkeyOrderItemID","tblOrderItems");
# get order item options
my $bfields = [qw/fkeyProductOptionID txtProductOptionValue/];
my $ostmt = qq/SELECT / . $app->sql->select_fields($bfields) . qq/ FROM tblCartItemOptions WHERE fkeyCartItemID='/ . $r->{pkeyCartItemID} . qq/'/;
my $odata = $app->sql->select_all_hr($ostmt);
my $ofields = [qw/fkeyProductOptionID txtProductOptionValue/];
foreach my $r (@{$odata}){
my @values = ();
foreach my $f (@{$ofields}){
push(@values,$r->{$f});
}
my $ostmt = qq/INSERT INTO tblOrderItemOptions / .
$app->sql->insert_fields(["fkeyOrderItemID",@{$ofields}]) .
qq/ VALUES ("/ . join('","',($pkeyOrderItemID,@values)) . qq/")/;
#$app->output($ostmt);
my $pkeyCartItemOptionID = $app->sql->insert($ostmt,"pkeyCartItemOptionID","tblOrderItemOptions");
}
############################ calulate order
my $pkeyProductID = $r->{'fkeyProductID'} || $r->{'pkeyProductID'};
$r->{decCartItemTotal} = sprintf("%.2f", $r->{decCartItemPrice} * $r->{intCartItemQuantity});
$subtotal += $r->{decCartItemTotal};
$taxable += $r->{decCartItemTotal} if $r->{blCartItemTaxable} == 1;
$shipping += $r->{decCartItemShipping};
}
my %params;
my $discount = $app->query->param('decCustomerDiscount') || 0;
my $ITEM_TOTAL = $subtotal;
$subtotal = $subtotal-($subtotal * ($discount/100));
my $additionalDiscount = $app->query->param('decCustomerAdditionalDiscount') || 0;
if ($additionalDiscount){
$subtotal=$subtotal-($subtotal*($additionalDiscount/100));
}
my $text = "New";
my $ordershipping;
my $shippingdiscount=0;
ad infintum...