test alipay
Showing
4 changed files
with
82 additions
and
8 deletions
... | @@ -99,6 +99,7 @@ RES_SUCCESS = '识别成功' | ... | @@ -99,6 +99,7 @@ RES_SUCCESS = '识别成功' |
99 | RES_SUCCESS_OTHER = '识别成功(其他类)' | 99 | RES_SUCCESS_OTHER = '识别成功(其他类)' |
100 | RES_SUCCESS_EMPTY = '识别成功(空数据)' | 100 | RES_SUCCESS_EMPTY = '识别成功(空数据)' |
101 | RES_SUCCESS_FINANCIAL_STATEMENT = '识别成功(财务报表类)' | 101 | RES_SUCCESS_FINANCIAL_STATEMENT = '识别成功(财务报表类)' |
102 | RES_SUCCESS_DOWN_PAYMENT = '识别成功(首付款支付承诺书类)' | ||
102 | RES_FAILED = '识别失败' | 103 | RES_FAILED = '识别失败' |
103 | RES_FAILED_1 = '识别失败(阶段1)' | 104 | RES_FAILED_1 = '识别失败(阶段1)' |
104 | RES_FAILED_2 = '识别失败(阶段2)' | 105 | RES_FAILED_2 = '识别失败(阶段2)' |
... | @@ -2572,6 +2573,11 @@ FINANCIAL_EXPLANATION_CLASSIFY_LIST = [100] | ... | @@ -2572,6 +2573,11 @@ FINANCIAL_EXPLANATION_CLASSIFY_LIST = [100] |
2572 | # 财报情况说明sheet名称 | 2573 | # 财报情况说明sheet名称 |
2573 | FINANCIAL_EXPLANATION_SHEET_NAME = "财报情况说明" | 2574 | FINANCIAL_EXPLANATION_SHEET_NAME = "财报情况说明" |
2574 | 2575 | ||
2576 | # 首付款支付承诺书分类标签 | ||
2577 | DOWN_PAYMENT_CLASSIFY_LIST = [96] | ||
2578 | # 首付款支付承诺书sheet名称 | ||
2579 | DOWN_PAYMENT_SHEET_NAME = "首付款支付承诺书" | ||
2580 | |||
2575 | # Jira-4562 - 银行流水首页提取关键词 | 2581 | # Jira-4562 - 银行流水首页提取关键词 |
2576 | INCOME_KEYWORDS_LIST = ["养老金", "社保", "代发工资", "工资入账", "奖金", "养老保险", "代发", "工资"] | 2582 | INCOME_KEYWORDS_LIST = ["养老金", "社保", "代发工资", "工资入账", "奖金", "养老保险", "代发", "工资"] |
2577 | INCOME_KEYWORDS_DICT = { | 2583 | INCOME_KEYWORDS_DICT = { | ... | ... |
... | @@ -1768,6 +1768,8 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -1768,6 +1768,8 @@ class Command(BaseCommand, LoggerMixin): |
1768 | financial_statement_dict = {} | 1768 | financial_statement_dict = {} |
1769 | # 添加财报情况说明的处理 | 1769 | # 添加财报情况说明的处理 |
1770 | financial_explanation_dict = {} | 1770 | financial_explanation_dict = {} |
1771 | # 添加首付款支付承诺书的处理 | ||
1772 | down_payment_dict = {} | ||
1771 | res_list = [] | 1773 | res_list = [] |
1772 | interest_keyword = Keywords.objects.filter( | 1774 | interest_keyword = Keywords.objects.filter( |
1773 | type=KeywordsType.INTEREST.value, on_off=True).values_list('keyword', flat=True) | 1775 | type=KeywordsType.INTEREST.value, on_off=True).values_list('keyword', flat=True) |
... | @@ -1835,6 +1837,31 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -1835,6 +1837,31 @@ class Command(BaseCommand, LoggerMixin): |
1835 | if "stamp" in ocr_data: | 1837 | if "stamp" in ocr_data: |
1836 | stamp = ocr_data.get("stamp", "") | 1838 | stamp = ocr_data.get("stamp", "") |
1837 | financial_explanation_dict["stamp"] = stamp | 1839 | financial_explanation_dict["stamp"] = stamp |
1840 | elif classify in consts.DOWN_PAYMENT_CLASSIFY_LIST: | ||
1841 | # 添加到 res_list 中 | ||
1842 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_DOWN_PAYMENT)) | ||
1843 | # 1-金融机构名称 | ||
1844 | financial_org_name = ocr_data.get("financial_org_name", "") | ||
1845 | down_payment_dict["financial_org_name"] = financial_org_name | ||
1846 | # 2-主借人姓名 | ||
1847 | main_borrower_name = ocr_data.get("main_borrower_name", "") | ||
1848 | down_payment_dict["main_borrower_name"] = main_borrower_name | ||
1849 | # 3-主借人证件号码 | ||
1850 | main_borrower_id_no = ocr_data.get("main_borrower_id_no", "") | ||
1851 | down_payment_dict["main_borrower_id_no"] = main_borrower_id_no | ||
1852 | # 4-申请编号 | ||
1853 | apply_no = ocr_data.get("apply_no", "") | ||
1854 | down_payment_dict["apply_no"] = apply_no | ||
1855 | # 5-抵押/租赁合同名称 | ||
1856 | contract_name = ocr_data.get("contract_name", "") | ||
1857 | down_payment_dict["contract_name"] = contract_name | ||
1858 | # 6-承诺人签字 | ||
1859 | promisor_signature = ocr_data.get("promisor_signature", "") | ||
1860 | down_payment_dict["promisor_signature"] = promisor_signature | ||
1861 | # 7-承诺人签字日期 | ||
1862 | promisor_signature_date = ocr_data.get("promisor_signature_date", "") | ||
1863 | down_payment_dict["promisor_signature_date"] = promisor_signature_date | ||
1864 | |||
1838 | elif classify in consts.OTHER_CLASSIFY_SET: # 其他类 | 1865 | elif classify in consts.OTHER_CLASSIFY_SET: # 其他类 |
1839 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_OTHER)) | 1866 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_OTHER)) |
1840 | continue | 1867 | continue |
... | @@ -2021,7 +2048,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2021,7 +2048,7 @@ class Command(BaseCommand, LoggerMixin): |
2021 | # src_excel_path = os.path.join(doc_data_path, 'src.xlsx') | 2048 | # src_excel_path = os.path.join(doc_data_path, 'src.xlsx') |
2022 | # wb.save(src_excel_path) | 2049 | # wb.save(src_excel_path) |
2023 | #need_follow表示在上传edms时文件名是否要添加"关注"两字 | 2050 | #need_follow表示在上传edms时文件名是否要添加"关注"两字 |
2024 | count_list, need_follow = wb.rebuild(merged_bs_summary, license_summary, res_list, doc.document_scheme, contract_result, doc.metadata, financial_statement_dict, financial_explanation_dict) | 2051 | count_list, need_follow = wb.rebuild(merged_bs_summary, license_summary, res_list, doc.document_scheme, contract_result, doc.metadata, financial_statement_dict, financial_explanation_dict, down_payment_dict) |
2025 | wb.save(excel_path) | 2052 | wb.save(excel_path) |
2026 | 2053 | ||
2027 | except Exception as e: | 2054 | except Exception as e: |
... | @@ -2130,10 +2157,10 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2130,10 +2157,10 @@ class Command(BaseCommand, LoggerMixin): |
2130 | # 更新OCR累计识别结果表 | 2157 | # 更新OCR累计识别结果表 |
2131 | if business_type == consts.HIL_PREFIX: | 2158 | if business_type == consts.HIL_PREFIX: |
2132 | result_class = HILOCRResult if is_ca else HILSEOCRResult | 2159 | result_class = HILOCRResult if is_ca else HILSEOCRResult |
2133 | res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) | 2160 | res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict) |
2134 | else: | 2161 | else: |
2135 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult | 2162 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult |
2136 | res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) | 2163 | res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict) |
2137 | 2164 | ||
2138 | except Exception as e: | 2165 | except Exception as e: |
2139 | self.online_log.error( | 2166 | self.online_log.error( |
... | @@ -2172,10 +2199,10 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2172,10 +2199,10 @@ class Command(BaseCommand, LoggerMixin): |
2172 | # 更新OCR累计识别结果表 | 2199 | # 更新OCR累计识别结果表 |
2173 | if business_type == consts.HIL_PREFIX: | 2200 | if business_type == consts.HIL_PREFIX: |
2174 | result_class = HILOCRResult if is_ca else HILSEOCRResult | 2201 | result_class = HILOCRResult if is_ca else HILSEOCRResult |
2175 | res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) | 2202 | res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict) |
2176 | else: | 2203 | else: |
2177 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult | 2204 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult |
2178 | res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) | 2205 | res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict) |
2179 | except Exception as e: | 2206 | except Exception as e: |
2180 | self.online_log.error( | 2207 | self.online_log.error( |
2181 | '{0} [process error (ocr result save)] [task={1}] [error={2}]'.format( | 2208 | '{0} [process error (ocr result save)] [task={1}] [error={2}]'.format( |
... | @@ -2527,7 +2554,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2527,7 +2554,7 @@ class Command(BaseCommand, LoggerMixin): |
2527 | self.online_log.info('{0} [stop safely]'.format(self.log_base)) | 2554 | self.online_log.info('{0} [stop safely]'.format(self.log_base)) |
2528 | 2555 | ||
2529 | @transaction.atomic | 2556 | @transaction.atomic |
2530 | def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task_str, financial_statement_dict, financial_explanation_dict): | 2557 | def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict): |
2531 | with transaction.atomic('afc'): | 2558 | with transaction.atomic('afc'): |
2532 | res_obj = result_class.objects.using('afc').select_for_update().filter(application_id=doc.application_id).first() | 2559 | res_obj = result_class.objects.using('afc').select_for_update().filter(application_id=doc.application_id).first() |
2533 | self.online_log.info('{0} [sql lock AFC application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) | 2560 | self.online_log.info('{0} [sql lock AFC application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) |
... | @@ -2543,6 +2570,10 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task | ... | @@ -2543,6 +2570,10 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task |
2543 | if res_obj is not None: | 2570 | if res_obj is not None: |
2544 | if financial_explanation_dict: | 2571 | if financial_explanation_dict: |
2545 | res_obj.fss_ocr = json.dumps([financial_explanation_dict]) | 2572 | res_obj.fss_ocr = json.dumps([financial_explanation_dict]) |
2573 | # 首付款支付承诺书存入数据库 | ||
2574 | if res_obj is not None: | ||
2575 | if down_payment_dict: | ||
2576 | res_obj.dp_ocr = json.dumps([down_payment_dict]) | ||
2546 | for classify, field in consts.RESULT_MAPPING.items(): | 2577 | for classify, field in consts.RESULT_MAPPING.items(): |
2547 | if not hasattr(res_obj, field): | 2578 | if not hasattr(res_obj, field): |
2548 | continue | 2579 | continue |
... | @@ -2568,7 +2599,7 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task | ... | @@ -2568,7 +2599,7 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task |
2568 | return res_obj | 2599 | return res_obj |
2569 | 2600 | ||
2570 | @transaction.atomic | 2601 | @transaction.atomic |
2571 | def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict): | 2602 | def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict, down_payment_dict): |
2572 | with transaction.atomic('default'): | 2603 | with transaction.atomic('default'): |
2573 | res_obj = result_class.objects.using('default').select_for_update().filter(application_id=doc.application_id).first() | 2604 | res_obj = result_class.objects.using('default').select_for_update().filter(application_id=doc.application_id).first() |
2574 | self.online_log.info('{0} [sql lock HIL application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) | 2605 | self.online_log.info('{0} [sql lock HIL application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) |
... | @@ -2584,6 +2615,10 @@ def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, tas | ... | @@ -2584,6 +2615,10 @@ def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, tas |
2584 | if res_obj is not None: | 2615 | if res_obj is not None: |
2585 | if financial_explanation_dict: | 2616 | if financial_explanation_dict: |
2586 | res_obj.fss_ocr = json.dumps([financial_explanation_dict]) | 2617 | res_obj.fss_ocr = json.dumps([financial_explanation_dict]) |
2618 | # 首付款支付承诺书存入数据库 | ||
2619 | if res_obj is not None: | ||
2620 | if down_payment_dict: | ||
2621 | res_obj.dp_ocr = json.dumps([down_payment_dict]) | ||
2587 | for classify, field in consts.RESULT_MAPPING.items(): | 2622 | for classify, field in consts.RESULT_MAPPING.items(): |
2588 | if not hasattr(res_obj, field): | 2623 | if not hasattr(res_obj, field): |
2589 | continue | 2624 | continue | ... | ... |
... | @@ -338,6 +338,7 @@ class AFCOCRResult(models.Model): | ... | @@ -338,6 +338,7 @@ class AFCOCRResult(models.Model): |
338 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 338 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
339 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | 339 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") |
340 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | 340 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") |
341 | dp_ocr = models.TextField(null=True, verbose_name="首付款支付承诺书") | ||
341 | 342 | ||
342 | 343 | ||
343 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 344 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
... | @@ -383,6 +384,7 @@ class HILOCRResult(models.Model): | ... | @@ -383,6 +384,7 @@ class HILOCRResult(models.Model): |
383 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 384 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
384 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | 385 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") |
385 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | 386 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") |
387 | dp_ocr = models.TextField(null=True, verbose_name="首付款支付承诺书") | ||
386 | 388 | ||
387 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 389 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
388 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 390 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
... | @@ -426,6 +428,7 @@ class AFCSEOCRResult(models.Model): | ... | @@ -426,6 +428,7 @@ class AFCSEOCRResult(models.Model): |
426 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 428 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
427 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | 429 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") |
428 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | 430 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") |
431 | dp_ocr = models.TextField(null=True, verbose_name="首付款支付承诺书") | ||
429 | 432 | ||
430 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 433 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
431 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 434 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
... | @@ -469,6 +472,7 @@ class HILSEOCRResult(models.Model): | ... | @@ -469,6 +472,7 @@ class HILSEOCRResult(models.Model): |
469 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 472 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
470 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | 473 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") |
471 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | 474 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") |
475 | dp_ocr = models.TextField(null=True, verbose_name="首付款支付承诺书") | ||
472 | 476 | ||
473 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 477 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
474 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 478 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ... | ... |
... | @@ -874,6 +874,33 @@ class BSWorkbook(Workbook): | ... | @@ -874,6 +874,33 @@ class BSWorkbook(Workbook): |
874 | ws.append(row) | 874 | ws.append(row) |
875 | 875 | ||
876 | 876 | ||
877 | def down_payment_rebuild(self, down_payment_dict): | ||
878 | """ | ||
879 | Desc: | ||
880 | 重构首付款支付承诺书sheet | ||
881 | """ | ||
882 | # 如果 down_payment_dict 为空, 则不创建sheet | ||
883 | if not down_payment_dict: | ||
884 | return | ||
885 | # 如果 down_payment_dict 不为空, 则创建sheet | ||
886 | ws = self.create_sheet(consts.DOWN_PAYMENT_SHEET_NAME) | ||
887 | english_chinese_dict = { | ||
888 | "financial_org_name": "渠道", | ||
889 | "main_borrower_name": "姓名", | ||
890 | "main_borrower_id_no": "证件号码", | ||
891 | "apply_no": "合同编号", | ||
892 | "contract_name": "合同名称", | ||
893 | "promisor_signature": "承诺人签字-电子", | ||
894 | "promisor_signature_date": "承诺人签字日期-电子" | ||
895 | } | ||
896 | for dp_key, dp_value in down_payment_dict.items(): | ||
897 | if dp_key in english_chinese_dict.keys(): | ||
898 | row = [english_chinese_dict[dp_key], str(dp_value)] | ||
899 | ws.append(row) | ||
900 | else: | ||
901 | row = [english_chinese_dict[dp_key], ""] | ||
902 | ws.append(row) | ||
903 | |||
877 | @staticmethod | 904 | @staticmethod |
878 | def remove_yuan(amount_key_set, key, src_str): | 905 | def remove_yuan(amount_key_set, key, src_str): |
879 | if key in amount_key_set and isinstance(src_str, str): | 906 | if key in amount_key_set and isinstance(src_str, str): |
... | @@ -973,7 +1000,7 @@ class BSWorkbook(Workbook): | ... | @@ -973,7 +1000,7 @@ class BSWorkbook(Workbook): |
973 | if len(self.sheetnames) > 1: | 1000 | if len(self.sheetnames) > 1: |
974 | self.remove(self.get_sheet_by_name('Sheet')) | 1001 | self.remove(self.get_sheet_by_name('Sheet')) |
975 | 1002 | ||
976 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme, contract_result, metadata, financial_statement_dict, financial_explanation_dict): | 1003 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme, contract_result, metadata, financial_statement_dict, financial_explanation_dict, down_payment_dict): |
977 | res_count_tuple = self.res_sheet(res_list) | 1004 | res_count_tuple = self.res_sheet(res_list) |
978 | 1005 | ||
979 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] | 1006 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] |
... | @@ -983,12 +1010,14 @@ class BSWorkbook(Workbook): | ... | @@ -983,12 +1010,14 @@ class BSWorkbook(Workbook): |
983 | self.bs_rebuild(bs_summary, res_count_tuple, metadata) | 1010 | self.bs_rebuild(bs_summary, res_count_tuple, metadata) |
984 | self.financial_rebuild(financial_statement_dict) | 1011 | self.financial_rebuild(financial_statement_dict) |
985 | self.financial_explanation_rebuild(financial_explanation_dict) | 1012 | self.financial_explanation_rebuild(financial_explanation_dict) |
1013 | self.down_payment_rebuild(down_payment_dict) | ||
986 | else: | 1014 | else: |
987 | self.bs_rebuild(bs_summary, res_count_tuple, metadata) | 1015 | self.bs_rebuild(bs_summary, res_count_tuple, metadata) |
988 | self.license_rebuild(license_summary, document_scheme, count_list) | 1016 | self.license_rebuild(license_summary, document_scheme, count_list) |
989 | self.contract_rebuild(contract_result, True) | 1017 | self.contract_rebuild(contract_result, True) |
990 | self.financial_rebuild(financial_statement_dict) | 1018 | self.financial_rebuild(financial_statement_dict) |
991 | self.financial_explanation_rebuild(financial_explanation_dict) | 1019 | self.financial_explanation_rebuild(financial_explanation_dict) |
1020 | self.down_payment_rebuild(down_payment_dict) | ||
992 | self.move_res_sheet() | 1021 | self.move_res_sheet() |
993 | self.remove_base_sheet() | 1022 | self.remove_base_sheet() |
994 | return count_list, self.need_follow | 1023 | return count_list, self.need_follow | ... | ... |
-
Please register or sign in to post a comment