Skip to content

Commit

Permalink
Merge pull request #360 from 18alantom/item-segregation
Browse files Browse the repository at this point in the history
feat: Item segregation by purpose
  • Loading branch information
18alantom authored Mar 10, 2022
2 parents b4397a9 + 17663b2 commit 500c2bb
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 22 deletions.
15 changes: 15 additions & 0 deletions models/doctype/Item/Item.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import frappe, { t } from 'frappe';

const itemForMap = {
purchases: t`Purchases`,
sales: t`Sales`,
both: t`Both`,
};

export default {
name: 'Item',
label: t`Item`,
Expand Down Expand Up @@ -42,6 +48,14 @@ export default {
default: 'Product',
options: ['Product', 'Service'],
},
{
fieldname: 'for',
label: t`For`,
fieldtype: 'Select',
options: Object.keys(itemForMap),
map: itemForMap,
default: 'both',
},
{
fieldname: 'incomeAccount',
label: t`Income`,
Expand Down Expand Up @@ -115,6 +129,7 @@ export default {
'rate',
'unit',
'itemType',
'for',
'tax',
'description',
'incomeAccount',
Expand Down
8 changes: 7 additions & 1 deletion models/doctype/Payment/Payment.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import frappe, { t } from 'frappe';
import utils from '../../../accounting/utils';
import { DEFAULT_NUMBER_SERIES } from '../../../frappe/utils/consts';

const paymentTypeMap = {
Receive: t`Receive`,
Pay: t`Pay`,
};

export default {
name: 'Payment',
label: t`Payment`,
Expand Down Expand Up @@ -57,7 +62,8 @@ export default {
label: t`Payment Type`,
fieldtype: 'Select',
placeholder: 'Payment Type',
options: ['Receive', 'Pay'],
options: Object.keys(paymentTypeMap),
map: paymentTypeMap,
required: 1,
},
{
Expand Down
13 changes: 9 additions & 4 deletions models/doctype/PurchaseInvoiceItem/PurchaseInvoiceItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,16 @@ export default {
required: 1,
getFilters(_, doc) {
let items = doc.parentdoc.items.map((d) => d.item).filter(Boolean);
if (items.length > 0) {
return {
name: ['not in', items],
};

const baseFilter = { for: ['not in', ['sales']] };
if (items.length <= 0) {
return baseFilter;
}

return {
name: ['not in', items],
...baseFilter,
};
},
},
{
Expand Down
13 changes: 9 additions & 4 deletions models/doctype/SalesInvoiceItem/SalesInvoiceItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@ export default {
required: 1,
getFilters(_, doc) {
let items = doc.parentdoc.items.map((d) => d.item).filter(Boolean);
if (items.length > 0) {
return {
name: ['not in', items],
};

const baseFilter = { for: ['not in', ['purchases']] };
if (items.length <= 0) {
return baseFilter;
}

return {
name: ['not in', items],
...baseFilter,
};
},
},
{
Expand Down
8 changes: 6 additions & 2 deletions src/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,19 @@ const routes = [
},
},
{
path: '/list/:doctype',
path: '/list/:doctype/:fieldname?/:value?',
name: 'ListView',
components: {
default: ListView,
edit: QuickEditForm,
},
props: {
default: (route) => {
const { doctype, filters } = route.params;
let { doctype, filters, fieldname, value } = route.params;
if (filters === undefined && fieldname && value) {
filters = { [fieldname]: value };
}

return {
doctype,
filters,
Expand Down
37 changes: 26 additions & 11 deletions src/sidebarConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,21 @@ const config = {
route: '/list/SalesInvoice',
doctype: 'SalesInvoice',
},
{
label: t`Payments`,
route: '/list/Payment/paymentType/Receive',
doctype: 'Payment',
},
{
label: t`Customers`,
route: '/list/Customer',
doctype: 'Customer',
},
{
label: t`Sales Items`,
route: '/list/Item/for/sales',
doctype: 'Item',
},
],
},
{
Expand All @@ -45,33 +55,38 @@ const config = {
route: '/list/PurchaseInvoice',
doctype: 'PurchaseInvoice',
},
{
label: t`Payments`,
route: '/list/Payment/paymentType/Pay',
doctype: 'Payment',
},
{
label: t`Suppliers`,
route: '/list/Supplier',
doctype: 'Supplier',
},
{
label: t`Purchase Items`,
route: '/list/Item/for/purchases',
doctype: 'Item',
},
],
},
{
icon: 'common-entries',
title: t`Common`,
route: '/list/Item',
route: '/list/JournalEntry',
items: [
{
label: t`Items`,
route: '/list/Item',
doctype: 'Item',
},
{
label: t`Payments`,
route: '/list/Payment',
doctype: 'Payment',
},
{
label: t`Journal Entry`,
route: '/list/JournalEntry',
doctype: 'JournalEntry',
},
{
label: t`Common Items`,
route: '/list/Item/for/both',
doctype: 'Item',
},
],
},
{
Expand Down

0 comments on commit 500c2bb

Please sign in to comment.