From 330b87cd5db0f68168aa6b98bc25e2fd76a3ea49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cornelius=20Wei=C3=9F?= Date: Fri, 17 Jun 2022 12:40:29 +0200 Subject: [PATCH] tweak(Sales): allow to decouple taxrate from net/gross --- tine20/Sales/Model/PurchaseInvoice.php | 2 +- tine20/Sales/js/PurchaseInvoiceEditDialog.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tine20/Sales/Model/PurchaseInvoice.php b/tine20/Sales/Model/PurchaseInvoice.php index 71d35f32380..e773177c6f1 100644 --- a/tine20/Sales/Model/PurchaseInvoice.php +++ b/tine20/Sales/Model/PurchaseInvoice.php @@ -159,11 +159,11 @@ class Sales_Model_PurchaseInvoice extends Tinebase_Record_Abstract 'label' => 'Sales Tax', // _('Sales Tax') 'type' => 'float', 'specialType' => 'percent', + self::NULLABLE => true, self::DEFAULT_VAL_CONFIG => [ self::APP_NAME => Tinebase_Config::APP_NAME, self::CONFIG => Tinebase_Config::SALES_TAX ], - 'inputFilters' => array('Zend_Filter_Empty' => 0), 'shy' => TRUE, ), 'price_total' => array( diff --git a/tine20/Sales/js/PurchaseInvoiceEditDialog.js b/tine20/Sales/js/PurchaseInvoiceEditDialog.js index 155a1eb4471..515bb2ce3dd 100644 --- a/tine20/Sales/js/PurchaseInvoiceEditDialog.js +++ b/tine20/Sales/js/PurchaseInvoiceEditDialog.js @@ -175,6 +175,8 @@ Tine.Sales.PurchaseInvoiceEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog calcTax: function() { var netPrice = parseFloat(this.priceNetField.getValue()); var taxPercent = parseFloat(this.salesTaxField.getValue()); + + if (_.isNaN(taxPercent)) return; var tax = netPrice * (taxPercent / 100); var negative = false; @@ -203,7 +205,7 @@ Tine.Sales.PurchaseInvoiceEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog var taxPercent = tax * 100 / netPrice; this.priceTaxField.setValue(tax); - this.salesTaxField.setValue(taxPercent.toFixed(2)); + this.salesTaxField.setValue(_.isFinite(taxPercent) && this.salesTaxField.getValue() !== null ? taxPercent.toFixed(2) : null); }, /** @@ -217,7 +219,7 @@ Tine.Sales.PurchaseInvoiceEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog var roundedPercent = Math.round(Math.abs(taxPercent) * 100) / 100; - this.salesTaxField.setValue(roundedPercent); + this.salesTaxField.setValue(_.isFinite(roundedPercent) && this.salesTaxField.getValue() !== null ? roundedPercent : null); }, /** @@ -349,6 +351,7 @@ Tine.Sales.PurchaseInvoiceEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog fieldLabel: this.app.i18n._('Sales Tax (percent)'), columnWidth: 1/4, suffix: ' %', + nullable: true, listeners: { scope: this, spin: this.onUpdateSalesTax.createDelegate(this),