feat(sales): Agricultural Goods checkbox on Sales Invoice & Sales Order

Mirror the Purchase Invoice behaviour on the sales side. Add the
`agricultural_goods` Check next to `purchase_type`; the two are mutually
exclusive (new sales_classification.js clears the other when one is set).

Agricultural Goods reveals the same fields as Purchase Type: act_type and
agricultural_country, with depends_on widened to
`purchase_type || agricultural_goods`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ali 2026-06-24 09:40:54 +00:00
parent 4fc406cb17
commit a8c67bab87
3 changed files with 39 additions and 6 deletions

View File

@ -625,13 +625,20 @@ def create_custom_fields():
insert_after='taxes_doc', insert_after='taxes_doc',
default=0 default=0
), ),
dict(
fieldname='agricultural_goods',
label='Agricultural Goods',
fieldtype='Check',
insert_after='purchase_type',
default=0
),
dict( dict(
fieldname='act_type', fieldname='act_type',
label='Act Type', label='Act Type',
fieldtype='Select', fieldtype='Select',
options='\nPurchase Act\nEQF\nImport', options='\nPurchase Act\nEQF\nImport',
insert_after='purchase_type', insert_after='agricultural_goods',
depends_on='eval:doc.purchase_type' depends_on='eval:doc.purchase_type || doc.agricultural_goods'
), ),
dict( dict(
fieldname='agricultural_country', fieldname='agricultural_country',
@ -639,7 +646,7 @@ def create_custom_fields():
fieldtype='Select', fieldtype='Select',
options='\nAruba\nƏfqanıstan\nAnqola\nAngilya\nAlbaniya\nAndorra\nNiderland Antil adaları\nBƏƏ\nArgentina\nErmənistan\nAmerika Samoası\nAntiqua və Barbuda\nAvstraliya\nAvstriya\nBurundi\nBelçika\nBenin\nBurkina-Faso\nBanqladeş\nBolqarıstan\nBəhreyn\nBaham adaları\nBosniya və Herseqovina\nBelarus\nBeliz\nBermud adaları\nBoliviya\nBraziliya\nBarbados\nBruney\nButan\nBotsvana\nMAR\nKanada\nKokos adaları\nİsveçrə\nÇili\nÇin\nKot-d\'ivuar\nKamerun\nKDR\nKonqo Respublikası\nKuk adaları\nKolumbiya\nKomor adaları\nKabo-Verde\nKosta-Rika\nKuba\nMilad adası\nKayman adaları\nKipr\nÇexiya\nAlmaniya\nCibuti\nDominika\nDanimarka\nDominikan Respublikası\nƏlcəzair\nEkvador\nMisir\nEritreya\nQərbi Sahara\nİspaniya\nEstoniya\nEfiopiya\nFinlandiya\nFici\nFoklend adaları\nFransa\nFarer adaları\nMikroneziya\nQabon\nBöyük Britaniya\nGürcüstan\nQana\nCəbəli-Tariq\nQvineya\nQambiya\nQvineya-Bisau\nEkvatorial Qvineya\nYunanıstan\nQrenada\nQrenlandiya\nQvatemala\nQuam\nQayana\nHonkonq\nHonduras\nXorvatiya\nHaiti\nMacarıstan\nindoneziya\nHindistan\nirlandiya\nİran\nİraq\nislandiya\nisrail\nitaliya\nYamayka\nlordaniya\nYaponiya\nQazağıstan\nKeniya\nQıızıstan\nKamboca\nKiribati\nSent-Kits və Nevis\nCənubi Koreya\nKüveyt\nLaos\nLivan\nLiberiya\nLiviya\nSent-Lüsiya\nLixtenşteyn\nŞri-Lanka\nLesoto\nLitva\nLüksemburq\nLatviya\nMakao\nMərakeş\nMonako\nMoldova\nMadaqaskar\nMaldiv adaları\nMeksika\nMarşall adaları\nMakedoniya\nMali\nMalta\nMyanma\nMonteneqro\nMonqolustan\nŞimali Marian adaları\nMozambik\nMavritaniya\nMontserrat\nMavriki\nMalavi\nMalayziya\nMayotta\nNamibiya\nYeni Kaledoniya\nNiger\nNorfolk adası\nNigeriya\nNikaraqua\nNiue\nNiderland\nNorveç\nNepal\nNauru\nYeni Zelandiya\nOman\nPakistan\nPanama\nPitkern adaları\nPeru\nFilippin\nPalau\nPapua-Yeni Qvineya\nPolşa\nPuerto-Riko\nKXDR\nPortuqaliya\nParaqvay\nFələstin Dövləti\nFransa Polineziyası\nQətər\nRuminiya\nRusiya\nRuanda\nSəudiyyə Ərəbistanı\nSudan\nSeneqal\nSinqapur\nMüqəddəs Yelena, Askenson və Tristan-da-Kunya adaları\nŞpisbergen və Yan-Mayen\nSolomon adaları\nSyerra-Leone\nSalvador\nSan-Marino\nSomali\nSen-Pyer və Mikelon\nSerbiya\nCənubi Sudan\nSan-Tome və Prinsipi\nSurinam\nSlovakiya\nSloeniya\nİsveç\nSvazilend\nSeyşel adaları\nSuriya\nTörks və Kaykos adaları\nÇad\nToqo\nTailand\nTacikistan\nTokelau\nTürkmənistan\nŞərqi Timor\nTonqa\nTrinidad və Tobaqo\nTunis\nTürkiyə\nTuvalu\nÇin Respublikası\nTanzaniya\nUqanda\nUkrayna\nUruqvay\nABŞ\nÖzbəkistan\nVatikan\nSent-Vinsent və Qrenadin\nVenesuela\nBritaniya Virgin adaları\nAmerika Virgin adaları\nVyetnam\nVanuatu\nUollis və Futuna\nSamoa\nYəmən\nCAR\nZambiya\nZimbabve', options='\nAruba\nƏfqanıstan\nAnqola\nAngilya\nAlbaniya\nAndorra\nNiderland Antil adaları\nBƏƏ\nArgentina\nErmənistan\nAmerika Samoası\nAntiqua və Barbuda\nAvstraliya\nAvstriya\nBurundi\nBelçika\nBenin\nBurkina-Faso\nBanqladeş\nBolqarıstan\nBəhreyn\nBaham adaları\nBosniya və Herseqovina\nBelarus\nBeliz\nBermud adaları\nBoliviya\nBraziliya\nBarbados\nBruney\nButan\nBotsvana\nMAR\nKanada\nKokos adaları\nİsveçrə\nÇili\nÇin\nKot-d\'ivuar\nKamerun\nKDR\nKonqo Respublikası\nKuk adaları\nKolumbiya\nKomor adaları\nKabo-Verde\nKosta-Rika\nKuba\nMilad adası\nKayman adaları\nKipr\nÇexiya\nAlmaniya\nCibuti\nDominika\nDanimarka\nDominikan Respublikası\nƏlcəzair\nEkvador\nMisir\nEritreya\nQərbi Sahara\nİspaniya\nEstoniya\nEfiopiya\nFinlandiya\nFici\nFoklend adaları\nFransa\nFarer adaları\nMikroneziya\nQabon\nBöyük Britaniya\nGürcüstan\nQana\nCəbəli-Tariq\nQvineya\nQambiya\nQvineya-Bisau\nEkvatorial Qvineya\nYunanıstan\nQrenada\nQrenlandiya\nQvatemala\nQuam\nQayana\nHonkonq\nHonduras\nXorvatiya\nHaiti\nMacarıstan\nindoneziya\nHindistan\nirlandiya\nİran\nİraq\nislandiya\nisrail\nitaliya\nYamayka\nlordaniya\nYaponiya\nQazağıstan\nKeniya\nQıızıstan\nKamboca\nKiribati\nSent-Kits və Nevis\nCənubi Koreya\nKüveyt\nLaos\nLivan\nLiberiya\nLiviya\nSent-Lüsiya\nLixtenşteyn\nŞri-Lanka\nLesoto\nLitva\nLüksemburq\nLatviya\nMakao\nMərakeş\nMonako\nMoldova\nMadaqaskar\nMaldiv adaları\nMeksika\nMarşall adaları\nMakedoniya\nMali\nMalta\nMyanma\nMonteneqro\nMonqolustan\nŞimali Marian adaları\nMozambik\nMavritaniya\nMontserrat\nMavriki\nMalavi\nMalayziya\nMayotta\nNamibiya\nYeni Kaledoniya\nNiger\nNorfolk adası\nNigeriya\nNikaraqua\nNiue\nNiderland\nNorveç\nNepal\nNauru\nYeni Zelandiya\nOman\nPakistan\nPanama\nPitkern adaları\nPeru\nFilippin\nPalau\nPapua-Yeni Qvineya\nPolşa\nPuerto-Riko\nKXDR\nPortuqaliya\nParaqvay\nFələstin Dövləti\nFransa Polineziyası\nQətər\nRuminiya\nRusiya\nRuanda\nSəudiyyə Ərəbistanı\nSudan\nSeneqal\nSinqapur\nMüqəddəs Yelena, Askenson və Tristan-da-Kunya adaları\nŞpisbergen və Yan-Mayen\nSolomon adaları\nSyerra-Leone\nSalvador\nSan-Marino\nSomali\nSen-Pyer və Mikelon\nSerbiya\nCənubi Sudan\nSan-Tome və Prinsipi\nSurinam\nSlovakiya\nSloeniya\nİsveç\nSvazilend\nSeyşel adaları\nSuriya\nTörks və Kaykos adaları\nÇad\nToqo\nTailand\nTacikistan\nTokelau\nTürkmənistan\nŞərqi Timor\nTonqa\nTrinidad və Tobaqo\nTunis\nTürkiyə\nTuvalu\nÇin Respublikası\nTanzaniya\nUqanda\nUkrayna\nUruqvay\nABŞ\nÖzbəkistan\nVatikan\nSent-Vinsent və Qrenadin\nVenesuela\nBritaniya Virgin adaları\nAmerika Virgin adaları\nVyetnam\nVanuatu\nUollis və Futuna\nSamoa\nYəmən\nCAR\nZambiya\nZimbabve',
insert_after='act_type', insert_after='act_type',
depends_on='eval:doc.purchase_type && doc.act_type == "Import"' depends_on='eval:(doc.purchase_type || doc.agricultural_goods) && doc.act_type == "Import"'
) )
], ],
"Sales Order Item": [ "Sales Order Item": [
@ -754,13 +761,20 @@ def create_custom_fields():
insert_after='seller', insert_after='seller',
default=0 default=0
), ),
dict(
fieldname='agricultural_goods',
label='Agricultural Goods',
fieldtype='Check',
insert_after='purchase_type',
default=0
),
dict( dict(
fieldname='act_type', fieldname='act_type',
label='Act Type', label='Act Type',
fieldtype='Select', fieldtype='Select',
options='\nPurchase Act\nEQF\nImport', options='\nPurchase Act\nEQF\nImport',
insert_after='purchase_type', insert_after='agricultural_goods',
depends_on='eval:doc.purchase_type' depends_on='eval:doc.purchase_type || doc.agricultural_goods'
), ),
dict( dict(
fieldname='agricultural_country', fieldname='agricultural_country',
@ -768,7 +782,7 @@ def create_custom_fields():
fieldtype='Select', fieldtype='Select',
options='\nAruba\nƏfqanıstan\nAnqola\nAngilya\nAlbaniya\nAndorra\nNiderland Antil adaları\nBƏƏ\nArgentina\nErmənistan\nAmerika Samoası\nAntiqua və Barbuda\nAvstraliya\nAvstriya\nBurundi\nBelçika\nBenin\nBurkina-Faso\nBanqladeş\nBolqarıstan\nBəhreyn\nBaham adaları\nBosniya və Herseqovina\nBelarus\nBeliz\nBermud adaları\nBoliviya\nBraziliya\nBarbados\nBruney\nButan\nBotsvana\nMAR\nKanada\nKokos adaları\nİsveçrə\nÇili\nÇin\nKot-d\'ivuar\nKamerun\nKDR\nKonqo Respublikası\nKuk adaları\nKolumbiya\nKomor adaları\nKabo-Verde\nKosta-Rika\nKuba\nMilad adası\nKayman adaları\nKipr\nÇexiya\nAlmaniya\nCibuti\nDominika\nDanimarka\nDominikan Respublikası\nƏlcəzair\nEkvador\nMisir\nEritreya\nQərbi Sahara\nİspaniya\nEstoniya\nEfiopiya\nFinlandiya\nFici\nFoklend adaları\nFransa\nFarer adaları\nMikroneziya\nQabon\nBöyük Britaniya\nGürcüstan\nQana\nCəbəli-Tariq\nQvineya\nQambiya\nQvineya-Bisau\nEkvatorial Qvineya\nYunanıstan\nQrenada\nQrenlandiya\nQvatemala\nQuam\nQayana\nHonkonq\nHonduras\nXorvatiya\nHaiti\nMacarıstan\nindoneziya\nHindistan\nirlandiya\nİran\nİraq\nislandiya\nisrail\nitaliya\nYamayka\nlordaniya\nYaponiya\nQazağıstan\nKeniya\nQıızıstan\nKamboca\nKiribati\nSent-Kits və Nevis\nCənubi Koreya\nKüveyt\nLaos\nLivan\nLiberiya\nLiviya\nSent-Lüsiya\nLixtenşteyn\nŞri-Lanka\nLesoto\nLitva\nLüksemburq\nLatviya\nMakao\nMərakeş\nMonako\nMoldova\nMadaqaskar\nMaldiv adaları\nMeksika\nMarşall adaları\nMakedoniya\nMali\nMalta\nMyanma\nMonteneqro\nMonqolustan\nŞimali Marian adaları\nMozambik\nMavritaniya\nMontserrat\nMavriki\nMalavi\nMalayziya\nMayotta\nNamibiya\nYeni Kaledoniya\nNiger\nNorfolk adası\nNigeriya\nNikaraqua\nNiue\nNiderland\nNorveç\nNepal\nNauru\nYeni Zelandiya\nOman\nPakistan\nPanama\nPitkern adaları\nPeru\nFilippin\nPalau\nPapua-Yeni Qvineya\nPolşa\nPuerto-Riko\nKXDR\nPortuqaliya\nParaqvay\nFələstin Dövləti\nFransa Polineziyası\nQətər\nRuminiya\nRusiya\nRuanda\nSəudiyyə Ərəbistanı\nSudan\nSeneqal\nSinqapur\nMüqəddəs Yelena, Askenson və Tristan-da-Kunya adaları\nŞpisbergen və Yan-Mayen\nSolomon adaları\nSyerra-Leone\nSalvador\nSan-Marino\nSomali\nSen-Pyer və Mikelon\nSerbiya\nCənubi Sudan\nSan-Tome və Prinsipi\nSurinam\nSlovakiya\nSloeniya\nİsveç\nSvazilend\nSeyşel adaları\nSuriya\nTörks və Kaykos adaları\nÇad\nToqo\nTailand\nTacikistan\nTokelau\nTürkmənistan\nŞərqi Timor\nTonqa\nTrinidad və Tobaqo\nTunis\nTürkiyə\nTuvalu\nÇin Respublikası\nTanzaniya\nUqanda\nUkrayna\nUruqvay\nABŞ\nÖzbəkistan\nVatikan\nSent-Vinsent və Qrenadin\nVenesuela\nBritaniya Virgin adaları\nAmerika Virgin adaları\nVyetnam\nVanuatu\nUollis və Futuna\nSamoa\nYəmən\nCAR\nZambiya\nZimbabve', options='\nAruba\nƏfqanıstan\nAnqola\nAngilya\nAlbaniya\nAndorra\nNiderland Antil adaları\nBƏƏ\nArgentina\nErmənistan\nAmerika Samoası\nAntiqua və Barbuda\nAvstraliya\nAvstriya\nBurundi\nBelçika\nBenin\nBurkina-Faso\nBanqladeş\nBolqarıstan\nBəhreyn\nBaham adaları\nBosniya və Herseqovina\nBelarus\nBeliz\nBermud adaları\nBoliviya\nBraziliya\nBarbados\nBruney\nButan\nBotsvana\nMAR\nKanada\nKokos adaları\nİsveçrə\nÇili\nÇin\nKot-d\'ivuar\nKamerun\nKDR\nKonqo Respublikası\nKuk adaları\nKolumbiya\nKomor adaları\nKabo-Verde\nKosta-Rika\nKuba\nMilad adası\nKayman adaları\nKipr\nÇexiya\nAlmaniya\nCibuti\nDominika\nDanimarka\nDominikan Respublikası\nƏlcəzair\nEkvador\nMisir\nEritreya\nQərbi Sahara\nİspaniya\nEstoniya\nEfiopiya\nFinlandiya\nFici\nFoklend adaları\nFransa\nFarer adaları\nMikroneziya\nQabon\nBöyük Britaniya\nGürcüstan\nQana\nCəbəli-Tariq\nQvineya\nQambiya\nQvineya-Bisau\nEkvatorial Qvineya\nYunanıstan\nQrenada\nQrenlandiya\nQvatemala\nQuam\nQayana\nHonkonq\nHonduras\nXorvatiya\nHaiti\nMacarıstan\nindoneziya\nHindistan\nirlandiya\nİran\nİraq\nislandiya\nisrail\nitaliya\nYamayka\nlordaniya\nYaponiya\nQazağıstan\nKeniya\nQıızıstan\nKamboca\nKiribati\nSent-Kits və Nevis\nCənubi Koreya\nKüveyt\nLaos\nLivan\nLiberiya\nLiviya\nSent-Lüsiya\nLixtenşteyn\nŞri-Lanka\nLesoto\nLitva\nLüksemburq\nLatviya\nMakao\nMərakeş\nMonako\nMoldova\nMadaqaskar\nMaldiv adaları\nMeksika\nMarşall adaları\nMakedoniya\nMali\nMalta\nMyanma\nMonteneqro\nMonqolustan\nŞimali Marian adaları\nMozambik\nMavritaniya\nMontserrat\nMavriki\nMalavi\nMalayziya\nMayotta\nNamibiya\nYeni Kaledoniya\nNiger\nNorfolk adası\nNigeriya\nNikaraqua\nNiue\nNiderland\nNorveç\nNepal\nNauru\nYeni Zelandiya\nOman\nPakistan\nPanama\nPitkern adaları\nPeru\nFilippin\nPalau\nPapua-Yeni Qvineya\nPolşa\nPuerto-Riko\nKXDR\nPortuqaliya\nParaqvay\nFələstin Dövləti\nFransa Polineziyası\nQətər\nRuminiya\nRusiya\nRuanda\nSəudiyyə Ərəbistanı\nSudan\nSeneqal\nSinqapur\nMüqəddəs Yelena, Askenson və Tristan-da-Kunya adaları\nŞpisbergen və Yan-Mayen\nSolomon adaları\nSyerra-Leone\nSalvador\nSan-Marino\nSomali\nSen-Pyer və Mikelon\nSerbiya\nCənubi Sudan\nSan-Tome və Prinsipi\nSurinam\nSlovakiya\nSloeniya\nİsveç\nSvazilend\nSeyşel adaları\nSuriya\nTörks və Kaykos adaları\nÇad\nToqo\nTailand\nTacikistan\nTokelau\nTürkmənistan\nŞərqi Timor\nTonqa\nTrinidad və Tobaqo\nTunis\nTürkiyə\nTuvalu\nÇin Respublikası\nTanzaniya\nUqanda\nUkrayna\nUruqvay\nABŞ\nÖzbəkistan\nVatikan\nSent-Vinsent və Qrenadin\nVenesuela\nBritaniya Virgin adaları\nAmerika Virgin adaları\nVyetnam\nVanuatu\nUollis və Futuna\nSamoa\nYəmən\nCAR\nZambiya\nZimbabve',
insert_after='act_type', insert_after='act_type',
depends_on='eval:doc.purchase_type && doc.act_type == "Import"' depends_on='eval:(doc.purchase_type || doc.agricultural_goods) && doc.act_type == "Import"'
), ),
# Per-item multiple tax articles: parent-level backing table, # Per-item multiple tax articles: parent-level backing table,
# linked to each item row by custom_si_row_key (Frappe has no # linked to each item row by custom_si_row_key (Frappe has no

View File

@ -15,6 +15,7 @@ app_include_js = [
"/assets/jey_erp/js/sales_invoice_tax_articles.js", "/assets/jey_erp/js/sales_invoice_tax_articles.js",
"/assets/jey_erp/js/sales_invoice_certificates.js", "/assets/jey_erp/js/sales_invoice_certificates.js",
"/assets/jey_erp/js/sales_order_vat.js", "/assets/jey_erp/js/sales_order_vat.js",
"/assets/jey_erp/js/sales_classification.js",
"/assets/jey_erp/js/asset.js", "/assets/jey_erp/js/asset.js",
"/assets/jey_erp/js/link_field_fix.js", "/assets/jey_erp/js/link_field_fix.js",
"bank_excel_import.bundle.js", "bank_excel_import.bundle.js",

View File

@ -0,0 +1,18 @@
// Mutual exclusion between the two purchase-classification checkboxes on
// Sales Invoice and Sales Order: only one of `purchase_type` /
// `agricultural_goods` may be set at a time. Checking one clears the other.
// Mirrors the Purchase Invoice behaviour in purchase_invoice.js.
['Sales Invoice', 'Sales Order'].forEach(function (doctype) {
frappe.ui.form.on(doctype, {
purchase_type: function (frm) {
if (frm.doc.purchase_type && frm.doc.agricultural_goods) {
frm.set_value('agricultural_goods', 0);
}
},
agricultural_goods: function (frm) {
if (frm.doc.agricultural_goods && frm.doc.purchase_type) {
frm.set_value('purchase_type', 0);
}
},
});
});