brotherton-erpnext/erpnext/patches/v11_0/refactor_autoname_naming.py
Saqib a6f98d48bc
refactor: POS workflow (#20789)
* refactor: add pos invoice doctype replacing sales invoice in POS

* refactor: move pos.py to pos invoice

* feat: add pos invoice merge log doctype

* feat: ability to merge pos invoices into a sales invoice

* feat: [wip] new ui for point of sale

* fix: pos.py moved to pos_invoice

* feat: loyalty points for POS Invoice

* fix: loyalty points on merging

* feat: return against pos invoices

* Merge 'fork/serial-no-selector' into refactor-pos-invoice

* chore: status fix and set warehouse from pos profile

* fix: naming series

* feat: merge pos returns into credit notes

* feat: add pos list action for merging into sales invoices

* feat[UX]: add shortcuts & focus on search after customer selection

* feat: stock validation from previous pos transactions

* Merge 'fork/serial-no-selector' into refactor-pos-invoice

* chore: fix df not found for base_amount precision

* feat: serial no validation from previous pos transactions

* chore: move pos.py into pos page

* feat: pos opening voucher

* feat: link pos closing voucher with opening voucher

* chore: use map_doc instead of get_mapped_doc for better perf

* feat: enforce opening voucher on pos page

* feat: [ui] [wip] point of sale beta ui refactor

* fix: auto fetching serial nos with batch no

* feat: [ui] item details section for new pos ui

* feat: remove item from cart

* refactor: [ui] [wip] split point_of_sale into components
* new payment component
* new numberpad
* fix pos opening status
* move from flex to grids

* fix: search from item selector

* feat: loyalty points as payment method

* feat: pos invoice status
* fix a bug with invalid JSON

* fix: loyalty program ui fixes

* feat: past order list and past order summary

* feat: (minor) setting discount from item details

* fix: adding item before customer selection

* feat: post order submission summary
* save and open draft orders
* fix: item group filter

* fix:  item_det not defined while submitting sle

* fix: minor bugs

* fix: minor ux fixes

* feat: show opening time in pos ui

* feat: item and customer images

* feat: emailing and printing an invoice

* fix: item details field edit shows empty alert

* fix: (minor) ux fixes

* chore: rename pos opening voucher to pos opening entry

* chore: (minor) rename pos closing voucher and sub doctypes

* chore: add patch for renaming pos closing doctypes

* fix: negative stock not allowed in pos invoices* default is_pos in pos invoices* fix: transalation

* fix: invoices not getting fetched on pos closing

* fix: indentation

* feat: view / edit customer info

* fix: minor bugs

* fix: minor bug

* fix: patch

* fix: minor ux issues

* fix: remove uppercase status

* refactor: pos closing payment reconciliation

* fix: move pos invoice print formats to pos invoice doctype

* fix: ui issues

* feat: new child doctype to store pos payment mode details

* fix: add to patches.txt

* feat: search by serial no

* chore: [wip] code cleanup

* fix: item not selectable from cart

* chore: [wip] code cleanup

* fix: minor issues
* loyalty points transactions
* default payment mode

* fix: minor fixes
* set correct mop amount with loaylty points
* editing draft invoices from UI

* chore: pos invoice merge log tests

* fix: batch / serial validation in pos ui and on submission

* feat: use onscan js for barcode scan events

* fix: cart header with amount column

* fix: validate batch no and qty in pos transactions

* chore: do not fetch closing balances as opening balance

* feat: show available qty in item selector

* feat: shortcuts

* fix: onscan.js not found

* fix: onscan.js not found

* fix: cannot return partial items

* fix: neagtive stock indicator

* feat: invoice discount

* fix: change available stock on warehouse change

* chore: cleanup code

* fix: pos profile payment method table

* feat: adding same item with different uom

* fix: loyalty points deleted after consolidation

* fix: enter loyalty amount instead of loyalty points

* chore: return print format

* feat: custom fields in pos view

* chore: pos invoice test

* chore: remove offline pos

* fix: cyclic dependency

* fix: cyclic dependency

* patch: remove pos page and order fixes

* chore: little fixes

* fix: patch perf and plural naming

* chore: tidy up pos invoice validation

* chore: move pos closing to accounts

* fix: move pos doctypes to accounts

* fix: move pos doctypes to accounts

* fix: item description in cart

* fix: item description in cart

* chore: loyalty tests
* minor fixes

* chore: rename point of sale beta to point of sale

* chore: reset past order summary on filter change

* chore: add point of sale to accounting desk

* fix: payment reconciliation table in pos closing

* fix: travis

* Update accounting.json

* fix: test cases

* fix: tests
* patch loyalty point entries

* fix: remove test
* default mode of payment is mandatory for pos transaction

* chore: remove unused checks from pos profile

* fix: loyalty point entry patch

* fix: numpad reset and patches

* fix: minor bugs

* fix: travis

* fix: travis

* fix: travis

* fix: travis

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2020-07-23 18:51:26 +05:30

120 lines
4.5 KiB
Python

# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import print_function, unicode_literals
import frappe
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
doctype_series_map = {
'Activity Cost': 'PROJ-ACC-.#####',
'Agriculture Task': 'AG-TASK-.#####',
'Assessment Plan': 'EDU-ASP-.YYYY.-.#####',
'Assessment Result': 'EDU-RES-.YYYY.-.#####',
'Asset Movement': 'ACC-ASM-.YYYY.-.#####',
'Attendance Request': 'HR-ARQ-.YY.-.MM.-.#####',
'Authorization Rule': 'HR-ARU-.#####',
'Bank Guarantee': 'ACC-BG-.YYYY.-.#####',
'Bin': 'MAT-BIN-.YYYY.-.#####',
'Certification Application': 'NPO-CAPP-.YYYY.-.#####',
'Certified Consultant': 'NPO-CONS-.YYYY.-.#####',
'Chat Room': 'CHAT-ROOM-.#####',
'Compensatory Leave Request': 'HR-CMP-.YY.-.MM.-.#####',
'Custom Script': 'SYS-SCR-.#####',
'Employee Benefit Application': 'HR-BEN-APP-.YY.-.MM.-.#####',
'Employee Benefit Application Detail': '',
'Employee Benefit Claim': 'HR-BEN-CLM-.YY.-.MM.-.#####',
'Employee Incentive': 'HR-EINV-.YY.-.MM.-.#####',
'Employee Onboarding': 'HR-EMP-ONB-.YYYY.-.#####',
'Employee Onboarding Template': 'HR-EMP-ONT-.#####',
'Employee Promotion': 'HR-EMP-PRO-.YYYY.-.#####',
'Employee Separation': 'HR-EMP-SEP-.YYYY.-.#####',
'Employee Separation Template': 'HR-EMP-STP-.#####',
'Employee Tax Exemption Declaration': 'HR-TAX-DEC-.YYYY.-.#####',
'Employee Tax Exemption Proof Submission': 'HR-TAX-PRF-.YYYY.-.#####',
'Employee Transfer': 'HR-EMP-TRN-.YYYY.-.#####',
'Event': 'EVENT-.YYYY.-.#####',
'Exchange Rate Revaluation': 'ACC-ERR-.YYYY.-.#####',
'GL Entry': 'ACC-GLE-.YYYY.-.#####',
'Guardian': 'EDU-GRD-.YYYY.-.#####',
'Hotel Room Reservation': 'HTL-RES-.YYYY.-.#####',
'Item Price': '',
'Job Applicant': 'HR-APP-.YYYY.-.#####',
'Job Offer': 'HR-OFF-.YYYY.-.#####',
'Leave Encashment': 'HR-ENC-.YYYY.-.#####',
'Leave Period': 'HR-LPR-.YYYY.-.#####',
'Leave Policy': 'HR-LPOL-.YYYY.-.#####',
'Loan': 'ACC-LOAN-.YYYY.-.#####',
'Loan Application': 'ACC-LOAP-.YYYY.-.#####',
'Loyalty Point Entry': '',
'Membership': 'NPO-MSH-.YYYY.-.#####',
'Packing Slip': 'MAT-PAC-.YYYY.-.#####',
'Patient Appointment': 'HLC-APP-.YYYY.-.#####',
'Payment Terms Template Detail': '',
'Payroll Entry': 'HR-PRUN-.YYYY.-.#####',
'Period Closing Voucher': 'ACC-PCV-.YYYY.-.#####',
'Plant Analysis': 'AG-PLA-.YYYY.-.#####',
'POS Closing Entry': 'POS-CLO-.YYYY.-.#####',
'Prepared Report': 'SYS-PREP-.YYYY.-.#####',
'Program Enrollment': 'EDU-ENR-.YYYY.-.#####',
'Quotation Item': '',
'Restaurant Reservation': 'RES-RES-.YYYY.-.#####',
'Retention Bonus': 'HR-RTB-.YYYY.-.#####',
'Room': 'HTL-ROOM-.YYYY.-.#####',
'Salary Structure Assignment': 'HR-SSA-.YY.-.MM.-.#####',
'Sales Taxes and Charges': '',
'Share Transfer': 'ACC-SHT-.YYYY.-.#####',
'Shift Assignment': 'HR-SHA-.YY.-.MM.-.#####',
'Shift Request': 'HR-SHR-.YY.-.MM.-.#####',
'SMS Log': 'SYS-SMS-.#####',
'Soil Analysis': 'AG-ANA-.YY.-.MM.-.#####',
'Soil Texture': 'AG-TEX-.YYYY.-.#####',
'Stock Ledger Entry': 'MAT-SLE-.YYYY.-.#####',
'Student Leave Application': 'EDU-SLA-.YYYY.-.#####',
'Student Log': 'EDU-SLOG-.YYYY.-.#####',
'Subscription': 'ACC-SUB-.YYYY.-.#####',
'Task': 'TASK-.YYYY.-.#####',
'Tax Rule': 'ACC-TAX-RULE-.YYYY.-.#####',
'Training Feedback': 'HR-TRF-.YYYY.-.#####',
'Training Result': 'HR-TRR-.YYYY.-.#####',
'Travel Request': 'HR-TRQ-.YYYY.-.#####',
'UOM Conversion Factor': 'MAT-UOM-CNV-.#####',
'Water Analysis': 'HR-WAT-.YYYY.-.#####',
'Workflow Action': 'SYS-WACT-.#####',
}
def execute():
series_to_set = get_series()
for doctype, opts in series_to_set.items():
set_series(doctype, opts['value'])
def set_series(doctype, value):
doc = frappe.db.exists('Property Setter', {'doc_type': doctype, 'property': 'autoname'})
if doc:
frappe.db.set_value('Property Setter', doc, 'value', value)
else:
make_property_setter(doctype, '', 'autoname', value, '', for_doctype = True)
def get_series():
series_to_set = {}
for doctype in doctype_series_map:
if not frappe.db.exists('DocType', doctype):
continue
if not frappe.db.a_row_exists(doctype):
continue
series_to_preserve = get_series_to_preserve(doctype)
if not series_to_preserve:
continue
# set autoname property setter
if series_to_preserve:
series_to_set[doctype] = {'value': series_to_preserve}
return series_to_set
def get_series_to_preserve(doctype):
series_to_preserve = frappe.db.get_value('DocType', doctype, 'autoname')
return series_to_preserve