def repost(doc): try: doc.set_status('In Progress') frappe.db.commit() repost_sl_entries(doc) repost_gl_entries(doc) check_if_stock_and_account_balance_synced( doc.posting_date, doc.company) doc.set_status('Completed') except Exception: frappe.db.rollback() traceback = frappe.get_traceback() frappe.log_error(traceback) message = frappe.message_log.pop() if traceback: message += "<br>" + "Traceback: <br>" + traceback frappe.db.set_value(doc.doctype, doc.name, 'error_log', message) notify_error_to_stock_managers(doc, message) doc.set_status('Failed') raise finally: frappe.db.commit()
def on_submit(self): self.validate_cheque_info() self.check_credit_limit() self.make_gl_entries() self.update_advance_paid() self.update_expense_claim() self.update_inter_company_jv() self.update_invoice_discounting() check_if_stock_and_account_balance_synced(self.posting_date, self.company, self.doctype, self.name)
def repost_future_sle_and_gle(self): args = frappe._dict({ "posting_date": self.posting_date, "posting_time": self.posting_time, "voucher_type": self.doctype, "voucher_no": self.name, "company": self.company }) if future_sle_exists(args): create_repost_item_valuation_entry(args) elif not is_reposting_pending(): check_if_stock_and_account_balance_synced(self.posting_date, self.company, self.doctype, self.name)
def repost_entries(): riv_entries = get_repost_item_valuation_entries() for row in riv_entries: doc = frappe.get_cached_doc('Repost Item Valuation', row.name) repost(doc) riv_entries = get_repost_item_valuation_entries() if riv_entries: return for d in frappe.get_all('Company', filters={'enable_perpetual_inventory': 1}): check_if_stock_and_account_balance_synced(today(), d.name)