diff --git a/accounting/gst.js b/accounting/gst.js index 45ee7f90..1186a709 100644 --- a/accounting/gst.js +++ b/accounting/gst.js @@ -122,7 +122,7 @@ async function generateB2bData(invoices) { items.forEach((item) => { const itemRecord = { - num: item.itemCode || 0, + num: item.hsnCode || 0, itm_det: { txval: item.baseAmount, rt: GST[item.tax], diff --git a/models/doctype/FulfillmentItem/RegionalChanges.js b/models/doctype/FulfillmentItem/RegionalChanges.js new file mode 100644 index 00000000..52de9eff --- /dev/null +++ b/models/doctype/FulfillmentItem/RegionalChanges.js @@ -0,0 +1,24 @@ +import { cloneDeep } from 'lodash'; +import FulfillmentItemOriginal from './FulfillmentItem'; + +export default function getAugmentedFulfillmentItem({ country }) { + const FulfillmentItem = cloneDeep(FulfillmentItemOriginal); + if (!country) { + return FulfillmentItem; + } + + if (country === 'India') { + FulfillmentItem.fields = [ + ...FulfillmentItem.fields, + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), + formulaDependsOn: ['item'], + }, + ]; + } + + return FulfillmentItem; +} diff --git a/models/doctype/Item/Item.js b/models/doctype/Item/Item.js index b6e04e29..324df387 100644 --- a/models/doctype/Item/Item.js +++ b/models/doctype/Item/Item.js @@ -5,6 +5,7 @@ export default { name: 'Item', doctype: 'DocType', isSingle: 0, + regional: 1, keywordFields: ['name', 'description'], fields: [ { @@ -112,17 +113,10 @@ export default { } }, }, - { - fieldname: 'itemCode', - label: 'Item Code', - fieldtype: 'Int', - placeholder: 'Item Code', - }, ], quickEditFields: [ 'rate', 'unit', - 'itemCode', 'itemType', 'tax', 'description', diff --git a/models/doctype/Item/RegionalChanges.js b/models/doctype/Item/RegionalChanges.js new file mode 100644 index 00000000..ab805d92 --- /dev/null +++ b/models/doctype/Item/RegionalChanges.js @@ -0,0 +1,29 @@ +import { cloneDeep } from 'lodash'; +import ItemOriginal from './Item'; + +export default function getAugmentedItem({ country }) { + const Item = cloneDeep(ItemOriginal); + if (!country) { + return Item; + } + + if (country === 'India') { + const nameFieldIndex = Item.fields.findIndex(i => i.fieldname === 'name'); + + Item.fields = [ + ...Item.fields.slice(0, nameFieldIndex+1), + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + placeholder: 'HSN/SAC Code', + required: 1 + }, + ...Item.fields.slice(nameFieldIndex+1, Item.fields.length), + ]; + + Item.quickEditFields.unshift('hsnCode'); + } + + return Item; +} diff --git a/models/doctype/PurchaseInvoiceItem/PurchaseInvoiceItem.js b/models/doctype/PurchaseInvoiceItem/PurchaseInvoiceItem.js index 401eccba..35f8eef0 100644 --- a/models/doctype/PurchaseInvoiceItem/PurchaseInvoiceItem.js +++ b/models/doctype/PurchaseInvoiceItem/PurchaseInvoiceItem.js @@ -86,12 +86,5 @@ export default { readOnly: 1, formula: (row, doc) => row.amount * doc.exchangeRate, }, - { - fieldname: 'itemCode', - label: 'Item Code', - fieldtype: 'Int', - formula: (row, doc) => doc.getFrom('Item', row.item, 'itemCode'), - formulaDependsOn: ['item'], - }, ], }; diff --git a/models/doctype/PurchaseInvoiceItem/RegionalChanges.js b/models/doctype/PurchaseInvoiceItem/RegionalChanges.js new file mode 100644 index 00000000..345a55be --- /dev/null +++ b/models/doctype/PurchaseInvoiceItem/RegionalChanges.js @@ -0,0 +1,24 @@ +import { cloneDeep } from 'lodash'; +import PurchaseInvoiceItemOriginal from './PurchaseInvoiceItem'; + +export default function getAugmentedPurchaseInvoiceItem({ country }) { + const PurchaseInvoiceItem = cloneDeep(PurchaseInvoiceItemOriginal); + if (!country) { + return PurchaseInvoiceItem; + } + + if (country === 'India') { + PurchaseInvoiceItem.fields = [ + ...PurchaseInvoiceItem.fields, + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), + formulaDependsOn: ['item'], + }, + ]; + } + + return PurchaseInvoiceItem; +} diff --git a/models/doctype/QuotationItem/RegionalChanges.js b/models/doctype/QuotationItem/RegionalChanges.js new file mode 100644 index 00000000..28a0f793 --- /dev/null +++ b/models/doctype/QuotationItem/RegionalChanges.js @@ -0,0 +1,24 @@ +import { cloneDeep } from 'lodash'; +import QuotationItemOriginal from './QuotationItem'; + +export default function getAugmentedQuotationItem({ country }) { + const QuotationItem = cloneDeep(QuotationItemOriginal); + if (!country) { + return QuotationItem; + } + + if (country === 'India') { + QuotationItem.fields = [ + ...QuotationItem.fields, + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), + formulaDependsOn: ['item'], + }, + ]; + } + + return QuotationItem; +} diff --git a/models/doctype/SalesInvoiceItem/RegionalChanges.js b/models/doctype/SalesInvoiceItem/RegionalChanges.js new file mode 100644 index 00000000..2244b9a9 --- /dev/null +++ b/models/doctype/SalesInvoiceItem/RegionalChanges.js @@ -0,0 +1,24 @@ +import { cloneDeep } from 'lodash'; +import SalesInvoiceItemOriginal from './SalesInvoiceItem'; + +export default function getAugmentedSalesInvoiceItem({ country }) { + const SalesInvoiceItem = cloneDeep(SalesInvoiceItemOriginal); + if (!country) { + return SalesInvoiceItem; + } + + if (country === 'India') { + SalesInvoiceItem.fields = [ + ...SalesInvoiceItem.fields, + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), + formulaDependsOn: ['item'], + }, + ]; + } + + return SalesInvoiceItem; +} diff --git a/models/doctype/SalesInvoiceItem/SalesInvoiceItem.js b/models/doctype/SalesInvoiceItem/SalesInvoiceItem.js index ccf73ce8..630c98f9 100644 --- a/models/doctype/SalesInvoiceItem/SalesInvoiceItem.js +++ b/models/doctype/SalesInvoiceItem/SalesInvoiceItem.js @@ -2,6 +2,7 @@ export default { name: 'SalesInvoiceItem', doctype: 'DocType', isChild: 1, + regional: 1, keywordFields: [], tableFields: ['item', 'tax', 'quantity', 'rate', 'amount'], fields: [ @@ -88,10 +89,10 @@ export default { formula: (row, doc) => row.amount * doc.exchangeRate, }, { - fieldname: 'itemCode', + fieldname: 'hsnCode', label: 'Item Code', fieldtype: 'Int', - formula: (row, doc) => doc.getFrom('Item', row.item, 'itemCode'), + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), formulaDependsOn: ['item'], }, ], diff --git a/models/doctype/SalesOrderItem/RegionalChanges.js b/models/doctype/SalesOrderItem/RegionalChanges.js new file mode 100644 index 00000000..550babea --- /dev/null +++ b/models/doctype/SalesOrderItem/RegionalChanges.js @@ -0,0 +1,24 @@ +import { cloneDeep } from 'lodash'; +import SalesOrderItemOriginal from './SalesOrderItem'; + +export default function getAugmentedSalesOrderItem({ country }) { + const SalesOrderItem = cloneDeep(SalesOrderItemOriginal); + if (!country) { + return SalesOrderItem; + } + + if (country === 'India') { + SalesOrderItem.fields = [ + ...SalesOrderItem.fields, + { + fieldname: 'hsnCode', + label: 'HSN/SAC', + fieldtype: 'Int', + formula: (row, doc) => doc.getFrom('Item', row.item, 'hsnCode'), + formulaDependsOn: ['item'], + }, + ]; + } + + return SalesOrderItem; +}