diff --git a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.py b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.py index 58b08e2f4ffeaac69d2f13cc7ead0f3ad090bf8d..017e51bf1edecb14ff962bfa040726714d50dbd1 100644 --- a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.py +++ b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.py @@ -3,20 +3,14 @@ if REQUEST is not None: raise Unauthorized portal = context.getPortalObject() - current_invoice = context.getCausalityValue() if current_invoice is None: - if target_language == "zh": # Wechat payment - invoice_template_path = portal.portal_preferences.getPreferredZhPrePaymentSubscriptionInvoiceTemplate() - else: - invoice_template_path = portal.portal_preferences.getPreferredDefaultPrePaymentSubscriptionInvoiceTemplate() - invoice_template = portal.restrictedTraverse(invoice_template_path) - + invoice_template = portal.restrictedTraverse(template) current_invoice = invoice_template.Base_createCloneDocument(batch_mode=1) context.edit(causality_value=current_invoice) - payment_transaction = invoice_template = portal.restrictedTraverse(payment) + payment_transaction = portal.restrictedTraverse(payment) current_invoice.edit( title="Reservation Fee", destination_value=context.getDestinationSection(), @@ -25,9 +19,8 @@ if current_invoice is None: start_date=payment_transaction.getStartDate(), stop_date=payment_transaction.getStopDate(), ) - if not amount: - # this is supposed to be free, so turn price free. - current_invoice["1"].setPrice(0.0) + + current_invoice["1"].setPrice(price) current_invoice["1"].setQuantity(context.getQuantity()) comment = "Validation invoice for subscription request %s" % context.getRelativeUrl() diff --git a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.xml b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.xml index 803de49430703a128ab165e21cec40caaa30ab79..374a57d6f947fd4f6152acb926d6efa732eb7523 100644 --- a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.xml +++ b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_createRelatedSaleInvoiceTransaction.xml @@ -50,7 +50,7 @@ </item> <item> <key> <string>_params</string> </key> - <value> <string>amount, tag, payment, target_language, REQUEST=None</string> </value> + <value> <string>price, tag, payment, template, REQUEST=None</string> </value> </item> <item> <key> <string>_proxy_roles</string> </key> diff --git a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_requestPaymentTransaction.py b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_requestPaymentTransaction.py index ea4421511131673116767849016e08b4d8a27159..f3d4b309d1b57c3a6eb58956fd33bf83dfbe1636 100644 --- a/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_requestPaymentTransaction.py +++ b/master/bt5/slapos_subscription_request/SkinTemplateItem/portal_skins/slapos_subscription_request/SubscriptionRequest_requestPaymentTransaction.py @@ -10,10 +10,12 @@ current_payment = None if current_invoice is None: if target_language == "zh": # Wechat payment, reservation fee is 188 CNY payment_template = portal.restrictedTraverse(portal.portal_preferences.getPreferredZhPrePaymentTemplate()) + invoice_template = portal.restrictedTraverse(portal.portal_preferences.getPreferredZhPrePaymentSubscriptionInvoiceTemplate()) else: # Payzen payment, reservation fee is 25 EUR payment_template = portal.restrictedTraverse(portal.portal_preferences.getPreferredDefaultPrePaymentTemplate()) - current_payment = payment_template.Base_createCloneDocument(batch_mode=1) + invoice_template = portal.restrictedTraverse(portal.portal_preferences.getPreferredDefaultPrePaymentSubscriptionInvoiceTemplate()) + current_payment = payment_template.Base_createCloneDocument(batch_mode=1) current_payment.edit( title="Payment for Reservation Fee", destination_value=context.getDestinationSection(), @@ -26,12 +28,28 @@ if current_invoice is None: amount = context.getQuantity() if context.SubscriptionRequest_testSkippedReservationFree(contract): # Reservation is Free - amount = 0 + price = 0 + tax = 0 + else: + invoice_line = invoice_template["1"].asContext() + price = invoice_line.getResourceValue().getPrice( + context=invoice_line) + + # We need to provide Price to pay right the way, so we need to include + # taxation at this point it is most liketly to quickly forecast price + # with taxes, but for now it is hardcoded. + tax = 0 + if 'base_amount/invoicing/taxable' in invoice_line.getBaseContributionList(): + tax = 0.2 + for line in current_payment.contentValues(): - if line.getSource() in ["account_module/payment_to_encash", "account_module/receivable"]: - quantity = int(amount) * line.getQuantity() - line.setQuantity(quantity) + if line.getSource() == "account_module/payment_to_encash": + total = round((-int(amount) * price)+(-int(amount) * price*tax), 2) + line.setQuantity(total) + elif line.getSource() == "account_module/receivable": + total = round((int(amount) * price)+(int(amount) * price*tax), 2) + line.setQuantity(total) # Accelarate job of alarms before proceed to payment. comment = "Validation payment for subscription request %s" % context.getRelativeUrl() @@ -46,6 +64,6 @@ if current_invoice is None: context.reindexObject(activate_kw={'tag': tag}) context.activate(tag=tag).SubscriptionRequest_createRelatedSaleInvoiceTransaction( - amount, tag, current_payment.getRelativeUrl(), target_language) + price, tag, current_payment.getRelativeUrl(), invoice_template.getRelativeUrl()) return current_payment