mirror of
https://github.com/frappe/books.git
synced 2024-12-23 11:29:03 +00:00
Merge pull request #360 from 18alantom/item-segregation
feat: Item segregation by purpose
This commit is contained in:
commit
500c2bb0a1
@ -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`,
|
||||
@ -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`,
|
||||
@ -115,6 +129,7 @@ export default {
|
||||
'rate',
|
||||
'unit',
|
||||
'itemType',
|
||||
'for',
|
||||
'tax',
|
||||
'description',
|
||||
'incomeAccount',
|
||||
|
@ -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`,
|
||||
@ -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,
|
||||
},
|
||||
{
|
||||
|
@ -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) {
|
||||
|
||||
const baseFilter = { for: ['not in', ['sales']] };
|
||||
if (items.length <= 0) {
|
||||
return baseFilter;
|
||||
}
|
||||
|
||||
return {
|
||||
name: ['not in', items],
|
||||
...baseFilter,
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -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) {
|
||||
|
||||
const baseFilter = { for: ['not in', ['purchases']] };
|
||||
if (items.length <= 0) {
|
||||
return baseFilter;
|
||||
}
|
||||
|
||||
return {
|
||||
name: ['not in', items],
|
||||
...baseFilter,
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ const routes = [
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/list/:doctype',
|
||||
path: '/list/:doctype/:fieldname?/:value?',
|
||||
name: 'ListView',
|
||||
components: {
|
||||
default: ListView,
|
||||
@ -62,7 +62,11 @@ const routes = [
|
||||
},
|
||||
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,
|
||||
|
@ -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',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -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',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user