| | |
| | | public FieldSetEntity getContractInfoByName(FieldSetEntity fs) throws BaseException { |
| | | FieldSetEntity fss = baseDao.getFieldSetEntity(CmnConst.LX_PROJECT_CONTRACT_INFO,fs.getUUID(),true); |
| | | FieldSetEntity fsProject = baseDao.getFieldSetEntity(CmnConst.PRODUCT_PROJECT_BUSINESS,fss.getString("project_uuid"),false); |
| | | DataTableEntity dt = fss.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); |
| | | FieldSetEntity fsub = null; |
| | | int invoiced = 0;//已开票金额 |
| | | int payment_received = 0;//已回款金额 |
| | | if(dt!=null && dt.getRows()>0){ |
| | | for (int i = 0; i < dt.getRows(); i++) { |
| | | fsub = dt.getFieldSetEntity(i); |
| | | String invo = fsub.getString("invoiced"); |
| | | String paym = fsub.getString("payment_received"); |
| | | if(BaseUtil.strIsNull(invo)){ |
| | | invo = "0"; |
| | | } |
| | | if(BaseUtil.strIsNull(paym)){ |
| | | paym = "0"; |
| | | } |
| | | invoiced += Double.parseDouble(invo); |
| | | payment_received += Double.parseDouble(paym); |
| | | } |
| | | FieldSetEntity contractName = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info WHERE contract_invoice_uuid in(SELECT uuid FROM product_project_contract_invoice where contract_name=?)", new String[]{fs.getString("uuid")},false); |
| | | if (contractName==null||StringUtils.isEmpty(contractName.getString("invoice_amount"))){ |
| | | fss.setValue("invoice_amount",0); |
| | | }else { |
| | | fss.setValue("invoice_amount",contractName.getString("invoice_amount")); |
| | | } |
| | | fss.setValue("invoiced",invoiced); |
| | | fss.setValue("payment_received",payment_received); |
| | | |
| | | fss.setValue("collection_amount",0); |
| | | fss.setValue("project_num",fsProject.getString("project_num")); |
| | | fss.setValue("project_name",fsProject.getString("project_name")); |
| | | return fss; |
| | |
| | | @Override |
| | | @Transactional |
| | | public String saveContractInvoice(FieldSetEntity fs) { |
| | | FieldSetEntity fsinvo = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB,"contract_info_uuid=?",new Object[]{fs.getString("contract_name")},false); |
| | | Double invoiced_amount = fs.getDouble("invoiced_amount");//已开票金额 |
| | | //回写已开票金额到合同子表 |
| | | FieldSetEntity fcosub = new FieldSetEntity(); |
| | | if(fsinvo!=null){ |
| | | fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); |
| | | fcosub.setValue("uuid",fsinvo.getUUID()); |
| | | fcosub.setValue("invoice_amount",invoiced_amount);//已开票金额 |
| | | baseDao.update(fcosub); |
| | | } |
| | | if(StringUtils.isEmpty(fs.getString(CmnConst.UUID))){ |
| | | fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); |
| | | fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); |
| | | fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); |
| | | fs.setValue("created_utc_datetime",new Date()); |
| | | return baseDao.add(fs,true); |
| | | String add = baseDao.add(fs, true); |
| | | writeBackInvoice(fs); |
| | | return add; |
| | | } else { |
| | | fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); |
| | | fs.setValue("updated_utc_datetime",new Date()); |
| | | baseDao.update(fs); |
| | | writeBackInvoice(fs); |
| | | return fs.getString(CmnConst.UUID); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 回写回款金额到合同 |
| | | * @param fs |
| | | */ |
| | | private void writeBackInvoice(FieldSetEntity fs){ |
| | | //按照条款回写到合同子表 |
| | | DataTableEntity subDataTable = fs.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_INVOICE_INFO); |
| | | for (int i = 0; i <subDataTable.getRows() ; i++) { |
| | | FieldSetEntity fsData = subDataTable.getFieldSetEntity(i); |
| | | FieldSetEntity fsinvo = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INVOICE_INFO,"contract_terms=?",new Object[]{fsData.getString("contract_terms")},false); |
| | | |
| | | FieldSetEntity contractTerms = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info where contract_terms=? GROUP BY contract_terms", new Object[]{fsData.getString("contract_terms")}, false); |
| | | |
| | | Double invoiced_amount = contractTerms.getDouble("invoice_amount");//已开票金额 |
| | | //回写已开票金额到合同子表 |
| | | FieldSetEntity fcosub = new FieldSetEntity(); |
| | | if(fsinvo!=null){ |
| | | fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); |
| | | fcosub.setValue("uuid",fsData.getString("contract_terms")); |
| | | fcosub.setValue("invoice_amount",invoiced_amount);//已开票金额 |
| | | baseDao.update(fcosub); |
| | | } |
| | | } |
| | | //按照合同回写到合同主表 |
| | | FieldSetEntity invoice_amount_fs = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info \n" + |
| | | "where contract_invoice_uuid in (SELECT uuid FROM product_project_contract_invoice where contract_name=?)", new Object[]{fs.getString("contract_name")}, false); |
| | | if(invoice_amount_fs!=null) { |
| | | FieldSetEntity invoiceFs = new FieldSetEntity(); |
| | | invoiceFs.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO); |
| | | invoiceFs.setValue("uuid",fs.getString("contract_name")); |
| | | invoiceFs.setValue("invoice_amount",invoice_amount_fs.getString("invoice_amount"));//已开票金额 |
| | | baseDao.update(invoiceFs); |
| | | } |
| | | } |
| | | /** |
| | | * 删除合同开票 |
| | | * @param fs |
| | | * @return |
| | |
| | | @Override |
| | | @Transactional |
| | | public String saveContractPayment(FieldSetEntity fs) throws BaseException { |
| | | FieldSetEntity fspay = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB,"contract_info_uuid=?",new Object[]{fs.getString("contract_name")},false); |
| | | Double amount_collected = fs.getDouble("amount_collected");//已回款金额 |
| | | //回写回款金额到合同子表 |
| | | FieldSetEntity fcosub = new FieldSetEntity(); |
| | | if(fspay!=null){ |
| | | fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); |
| | | fcosub.setValue("uuid",fspay.getUUID()); |
| | | fcosub.setValue("payment_received",amount_collected);//已回款金额 |
| | | baseDao.update(fcosub); |
| | | } |
| | | |
| | | if(StringUtils.isEmpty(fs.getString(CmnConst.UUID))){ |
| | | fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); |
| | | fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); |
| | | fs.setValue("created_utc_datetime",new Date()); |
| | | return baseDao.add(fs,true); |
| | | String add = baseDao.add(fs, true); |
| | | writeBackPayment(fs); |
| | | return add; |
| | | } else { |
| | | fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); |
| | | fs.setValue("updated_utc_datetime",new Date()); |
| | | baseDao.update(fs); |
| | | writeBackPayment(fs); |
| | | return fs.getString(CmnConst.UUID); |
| | | } |
| | | } |
| | | private void writeBackPayment(FieldSetEntity fs){ |
| | | //回写发票号回款 |
| | | DataTableEntity dt = fs.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_PAYMENT_COLLECTION); |
| | | for (int i = 0; i <dt.getRows() ; i++) { |
| | | FieldSetEntity subFs = dt.getFieldSetEntity(i); |
| | | FieldSetEntity collection_amount_fs = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` where invoice_num=?", new String[]{subFs.getString("invoice_num")}, false); |
| | | baseDao.executeUpdate("UPDATE product_project_contract_invoice_info set payment_amount=? where invoice_num=?",new String[]{collection_amount_fs.getString("collection_amount"),subFs.getString("invoice_num")}); |
| | | } |
| | | //回写条款回款 |
| | | FieldSetEntity contractTerms = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` \n" + |
| | | "where contract_payment_uuid in(SELECT uuid FROM product_project_contract_payment where contract_terms=?)", new String[]{fs.getString("contract_terms")}, false); |
| | | if (contractTerms!=null&&!StringUtils.isEmpty(contractTerms.getString("collection_amount"))) { |
| | | FieldSetEntity contractInfoSub = new FieldSetEntity(); |
| | | contractInfoSub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); |
| | | contractInfoSub.setValue("uuid",fs.getString("contract_terms")); |
| | | contractInfoSub.setValue("payment_amount",contractTerms.getString("collection_amount")); |
| | | baseDao.update(contractInfoSub); |
| | | } |
| | | //回写合同总回款 |
| | | FieldSetEntity contractName = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` \n" + |
| | | "where contract_payment_uuid in(SELECT uuid FROM product_project_contract_payment where contract_name=?)", new String[]{fs.getString("contract_name")}, false); |
| | | if (contractName!=null&&!StringUtils.isEmpty(contractName.getString("collection_amount"))){ |
| | | FieldSetEntity contractInfo = new FieldSetEntity(); |
| | | contractInfo.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO); |
| | | contractInfo.setValue("uuid",fs.getString("contract_name")); |
| | | contractInfo.setValue("collection_amount",contractName.getString("collection_amount")); |
| | | baseDao.update(contractInfo); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除合同回款 |