From 19dbd05ad95e47aaff5c32350f4d8f14c398f05e Mon Sep 17 00:00:00 2001 From: OathK1per Date: Fri, 13 Oct 2023 16:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=9B=E5=88=A9A=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/palmte/work/bean/IncomeCostBean.java | 33 ++++++++++ .../controller/backend/ProjectController.java | 12 ++-- .../java/cn/palmte/work/model/Project.java | 66 +++++++++++++++++++ .../cn/palmte/work/model/ProjectBudget.java | 44 +++++++++++++ .../cn/palmte/work/model/ProjectExtend.java | 22 +++++++ .../work/service/ProjectBudgetService.java | 10 +++ .../palmte/work/service/ProjectService.java | 3 + .../work/utils/excel/ExportExcelUtils.java | 21 ++++++ src/main/resources/application-sit.properties | 2 +- .../static/assets/js/project_budget.js | 4 ++ .../templates/admin/project_approve.ftl | 21 ++++++ .../templates/admin/project_budget_edit.ftl | 21 ++++++ 12 files changed, 252 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java index 62abf03..ba29c02 100644 --- a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java +++ b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java @@ -479,6 +479,39 @@ public abstract class IncomeCostBean { return getCostTotalTaxInclude().subtract(getCostTotalTaxExclude()); } + /** + * 计算项目毛利 + * 收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税) + */ + public BigDecimal getProjectGrossProfitA() { + BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + BigDecimal costTotalTaxExclude = getCostTotalTaxExclude(); + if (null == incomeTotalTaxExclude || null == costTotalTaxExclude) { + return handleSpecial(null); + } + return incomeTotalTaxExclude + .subtract(costTotalTaxExclude); + } + + /** + * 计算项目毛利率 + * 毛利(不含税)/收入总计(不含税 + */ + public BigDecimal getProjectGrossProfitARate() { + BigDecimal projectGrossProfit = getProjectGrossProfitA(); + BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + if (null == projectGrossProfit || null == incomeTotalTaxExclude) { + return handleSpecial(null); + } + BigDecimal zero = new BigDecimal(0); + if (projectGrossProfit.compareTo(zero) == 0 || incomeTotalTaxExclude.compareTo(zero) == 0) { + return handleSpecial(null); + } + return projectGrossProfit + .multiply(new BigDecimal(100)) + .divide(incomeTotalTaxExclude, 2, BigDecimal.ROUND_HALF_UP); + } + /** * 计算项目毛利 * 收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index dc36cc8..61f8741 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -150,10 +150,10 @@ public class ProjectController extends BaseController { public void export(@RequestParam(value = "keywords", required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException { Map searchInfo = getSearchInfo(keywords); downloadHeader(httpServletResponse, Utils.generateExcelName("项目报表"), "application/octet-stream"); - String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额", + String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额", "华三产品金额", "其他产品金额", "项目当前状态", "行业场景应用", "解决方案", "客户名称", "最终用户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "战略合作对象", "项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称","项目阶段", "公司销售阶段", "当前进度描述", "下一步计划", "项目开始时间", "项目结束时间", "最后更新时间"}; - String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound", + String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitARound", "grossProfitAMarginRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound", "huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlanStr", "customer", "terminalCustomer", "contractTimeStr", "bidsTimeStr", "isSecondStr", "signTypeStr", "collaborator", "principal", "valueRisk", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection", "approveStatusDesc", "approveName", "creatorName", "deptName","stageName", "saleStageName", "stageRemark", "nextPlan", "startDateStr", "endDateStr", "lastUpdateTimeStr"}; ExportUtils.exportToExcel(headers, exportColumns, 1, 10000, @@ -186,10 +186,10 @@ public class ProjectController extends BaseController { ProjectBudget projectBudget = projectService.findBudgetByProjectId(project.getId()); String[] headers1 = {"部门名称", "项目编号", "项目名称", "合同名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", - "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", + "项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", "价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"}; String[] columns1 = {"deptNameBudget", "projectNoBudget", "nameBudget", "contractBudget", "typeDescBudget", "startDateBudget", "endDateBudget", "underwrittenModeStrBudget", "collaboratorBudget", "advanceInterestAmountRoundBudget", "advancePeakAmountRoundBudget", "contractRoundBudget", - "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget", + "grossProfitARoundBudget", "grossProfitAMarginRoundBudget", "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget", "valueRiskBudget", "principalBudget", "contractTimeBudget", "bidsTimeBudget", "isSecondStrBudget", "signTypeStrBudget", "mainContractCollectionTermsBudget", "mainContractResolvePlanBudget", "calculationCollectionBudget"}; exportExcelUtils.exportProjectBudgetExcel(headers1, columns1, projectBudget, "yyyy-MM-dd", 0, "项目基本信息", outputStream); BudgetBean budgetBean = projectBudgetService.getBudget(project); @@ -1203,10 +1203,10 @@ public class ProjectController extends BaseController { ExportExcelUtils exportExcelUtils = new ExportExcelUtils(); ProjectBudget projectBudget = projectService.findBudgetByProjectId(project.getId()); String[] headers1 = {"部门名称", "项目编号", "项目名称", "合同名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", - "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", + "项目毛利A", "项目毛利A利率", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", "价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"}; String[] columns1 = {"deptNameBudget", "projectNoBudget", "nameBudget", "contractBudget", "typeDescBudget", "startDateBudget", "endDateBudget", "underwrittenModeStrBudget", "collaboratorBudget", "advanceInterestAmountRoundBudget", "advancePeakAmountRoundBudget", "contractRoundBudget", - "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget", + "grossProfitARoundBudget", "grossProfitAMarginRoundBudget", "grossProfitRoundBudget", "grossProfitMarginRoundBudget", "huazhiRoundBudget", "huizhiRoundBudget", "huasanRoundBudget", "ziguangRoundBudget", "certaintyStrBudget", "industryScenarioBudget", "resolvePlanStrBudget", "customerBudget", "terminalCustomerBudget", "valueRiskBudget", "principalBudget", "contractTimeBudget", "bidsTimeBudget", "isSecondStrBudget", "signTypeStrBudget", "mainContractCollectionTermsBudget", "mainContractResolvePlanBudget", "calculationCollectionBudget"}; exportExcelUtils.exportProjectBudgetExcel(headers1, columns1, projectBudget, "yyyy-MM-dd", 0, "项目基本信息", outputStream); diff --git a/src/main/java/cn/palmte/work/model/Project.java b/src/main/java/cn/palmte/work/model/Project.java index 3916a69..a6b106a 100644 --- a/src/main/java/cn/palmte/work/model/Project.java +++ b/src/main/java/cn/palmte/work/model/Project.java @@ -211,6 +211,12 @@ public class Project { @Column(name = "certainty_str") private String certaintyStr; + @Column(name = "gross_profit_a") + private BigDecimal grossProfitA; + + @Column(name = "gross_profit_a_margin") + private BigDecimal grossProfitAMargin; + @Column(name = "gross_profit") private BigDecimal grossProfit; @@ -283,6 +289,12 @@ public class Project { @Transient private String huasanRound; + @Transient + private String grossProfitARound; + + @Transient + private String grossProfitAMarginRound; + @Transient private String grossProfitRound; @@ -310,6 +322,12 @@ public class Project { @Transient private String huasanRound2; + @Transient + private String grossProfitARound2; + + @Transient + private String grossProfitAMarginRound2; + @Transient private String grossProfitRound2; @@ -1134,4 +1152,52 @@ public class Project { public void setSaleStageName(String saleStageName) { this.saleStageName = saleStageName; } + + public BigDecimal getGrossProfitA() { + return grossProfitA; + } + + public void setGrossProfitA(BigDecimal grossProfitA) { + this.grossProfitA = grossProfitA; + } + + public BigDecimal getGrossProfitAMargin() { + return grossProfitAMargin; + } + + public void setGrossProfitAMargin(BigDecimal grossProfitAMargin) { + this.grossProfitAMargin = grossProfitAMargin; + } + + public String getGrossProfitARound() { + return grossProfitARound; + } + + public void setGrossProfitARound(String grossProfitARound) { + this.grossProfitARound = grossProfitARound; + } + + public String getGrossProfitAMarginRound() { + return grossProfitAMarginRound; + } + + public void setGrossProfitAMarginRound(String grossProfitAMarginRound) { + this.grossProfitAMarginRound = grossProfitAMarginRound; + } + + public String getGrossProfitARound2() { + return grossProfitARound2; + } + + public void setGrossProfitARound2(String grossProfitARound2) { + this.grossProfitARound2 = grossProfitARound2; + } + + public String getGrossProfitAMarginRound2() { + return grossProfitAMarginRound2; + } + + public void setGrossProfitAMarginRound2(String grossProfitAMarginRound2) { + this.grossProfitAMarginRound2 = grossProfitAMarginRound2; + } } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudget.java b/src/main/java/cn/palmte/work/model/ProjectBudget.java index 08abd68..1644b65 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudget.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudget.java @@ -157,6 +157,12 @@ public class ProjectBudget { @Column(name = "certainty_str_budget") private String certaintyStrBudget; + @Column(name = "gross_profit_a_budget") + private BigDecimal grossProfitABudget; + + @Column(name = "gross_profit_a_margin_budget") + private BigDecimal grossProfitAMarginBudget; + @Column(name = "gross_profit_budget") private BigDecimal grossProfitBudget; @@ -217,6 +223,12 @@ public class ProjectBudget { @Transient private String huasanRoundBudget; + @Transient + private String grossProfitARoundBudget; + + @Transient + private String grossProfitAMarginRoundBudget; + @Transient private String grossProfitRoundBudget; @@ -660,4 +672,36 @@ public class ProjectBudget { public void setAdvancePeakAmountRoundBudget(String advancePeakAmountRoundBudget) { this.advancePeakAmountRoundBudget = advancePeakAmountRoundBudget; } + + public BigDecimal getGrossProfitABudget() { + return grossProfitABudget; + } + + public void setGrossProfitABudget(BigDecimal grossProfitABudget) { + this.grossProfitABudget = grossProfitABudget; + } + + public BigDecimal getGrossProfitAMarginBudget() { + return grossProfitAMarginBudget; + } + + public void setGrossProfitAMarginBudget(BigDecimal grossProfitAMarginBudget) { + this.grossProfitAMarginBudget = grossProfitAMarginBudget; + } + + public String getGrossProfitARoundBudget() { + return grossProfitARoundBudget; + } + + public void setGrossProfitARoundBudget(String grossProfitARoundBudget) { + this.grossProfitARoundBudget = grossProfitARoundBudget; + } + + public String getGrossProfitAMarginRoundBudget() { + return grossProfitAMarginRoundBudget; + } + + public void setGrossProfitAMarginRoundBudget(String grossProfitAMarginRoundBudget) { + this.grossProfitAMarginRoundBudget = grossProfitAMarginRoundBudget; + } } diff --git a/src/main/java/cn/palmte/work/model/ProjectExtend.java b/src/main/java/cn/palmte/work/model/ProjectExtend.java index f307af5..536b110 100644 --- a/src/main/java/cn/palmte/work/model/ProjectExtend.java +++ b/src/main/java/cn/palmte/work/model/ProjectExtend.java @@ -53,6 +53,12 @@ public class ProjectExtend { @Column(name = "ziguang_other_amount") private BigDecimal ziguangOtherAmount; + @Column(name = "gross_profit_a") + private BigDecimal grossProfitA; + + @Column(name = "gross_profit_a_margin") + private BigDecimal grossProfitAMargin; + @Column(name = "gross_profit") private BigDecimal grossProfit; @@ -129,6 +135,22 @@ public class ProjectExtend { this.ziguangOtherAmount = ziguangOtherAmount; } + public BigDecimal getGrossProfitA() { + return grossProfitA; + } + + public void setGrossProfitA(BigDecimal grossProfitA) { + this.grossProfitA = grossProfitA; + } + + public BigDecimal getGrossProfitAMargin() { + return grossProfitAMargin; + } + + public void setGrossProfitAMargin(BigDecimal grossProfitAMargin) { + this.grossProfitAMargin = grossProfitAMargin; + } + public BigDecimal getGrossProfit() { return grossProfit; } diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 01de437..9c6a49d 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -957,6 +957,11 @@ public class ProjectBudgetService { budget.setAdvancePeakAmountBudget(bean.getAmount()); BudgetBean budgetBean = projectBudgetService.getBudget(p); + BigDecimal grossProfitA = budgetBean.getProjectGrossProfitA(); + if (grossProfitA != null) { + budget.setGrossProfitABudget(grossProfitA); + budget.setGrossProfitAMarginBudget(budgetBean.getProjectGrossProfitARate()); + } BigDecimal grossProfit = budgetBean.getProjectGrossProfit(); if (grossProfit != null) { budget.setGrossProfitBudget(grossProfit); @@ -999,6 +1004,11 @@ public class ProjectBudgetService { extend.setAdvancePeakAmount(bean.getAmount()); BudgetBean budgetBean = projectBudgetService.getBudget(p); + BigDecimal grossProfitA = budgetBean.getProjectGrossProfitA(); + if (grossProfitA != null) { + extend.setGrossProfitA(grossProfitA); + extend.setGrossProfitAMargin(budgetBean.getProjectGrossProfitARate()); + } BigDecimal grossProfit = budgetBean.getProjectGrossProfit(); if (grossProfit != null) { extend.setGrossProfit(grossProfit); diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index ac8bc40..214ec56 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -65,6 +65,7 @@ public class ProjectService { "CASE p.approve_status WHEN 0 THEN '待审核' WHEN 1 THEN '审核通过' WHEN 2 THEN '审核不通过' ELSE '未知' AS approveStatusDesc," + */ QueryHelper queryHelper = new QueryHelper("SELECT p.*, FORMAT(p.contract_amount,2) as contractRound, FORMAT(p.huazhi_product_amount,2) as huazhiRound, FORMAT(p.huizhi_product_amount,2) as huizhiRound, FORMAT(p.huasan_product_amount,2) as huasanRound, FORMAT(p.ziguang_other_amount,2) as ziguangRound" + + ", FORMAT(p.gross_profit_a,2) as grossProfitARound, FORMAT(p.gross_profit_a_margin,2) as grossProfitAMarginRound, FORMAT(pe.gross_profit_a,2) as grossProfitARound2, FORMAT(pe.gross_profit_a_margin,2) as grossProfitAMarginRound2" + ", FORMAT(p.gross_profit,2) as grossProfitRound, FORMAT(p.gross_profit_margin,2) as grossProfitMarginRound, FORMAT(p.advance_interest_amount,2) as advanceInterestAmountRound, FORMAT(p.advance_peak_amount,2) as advancePeakAmountRound, pe.is_budget as isBudget" + ", FORMAT(pe.contract_amount,2) as contractRound2, FORMAT(pe.huazhi_product_amount,2) as huazhiRound2, FORMAT(pe.huizhi_product_amount,2) as huizhiRound2, FORMAT(pe.huasan_product_amount,2) as huasanRound2, FORMAT(pe.ziguang_other_amount,2) as ziguangRound2" + ", FORMAT(pe.gross_profit,2) as grossProfitRound2, FORMAT(pe.gross_profit_margin,2) as grossProfitMarginRound2, FORMAT(pe.advance_interest_amount,2) as advanceInterestAmountRound2, FORMAT(pe.advance_peak_amount,2) as advancePeakAmountRound2" + @@ -286,6 +287,8 @@ public class ProjectService { project.setHuazhiRound(project.getHuazhiRound2()); project.setHuasanRound(project.getHuasanRound2()); project.setZiguangRound(project.getZiguangRound2()); + project.setGrossProfitARound(project.getGrossProfitARound2()); + project.setGrossProfitAMarginRound(project.getGrossProfitAMarginRound2()); project.setGrossProfitRound(project.getGrossProfitRound2()); project.setGrossProfitMarginRound(project.getGrossProfitMarginRound2()); project.setAdvancePeakAmountRound(project.getAdvancePeakAmountRound2()); diff --git a/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java b/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java index a4e1485..2939cf3 100644 --- a/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java +++ b/src/main/java/cn/palmte/work/utils/excel/ExportExcelUtils.java @@ -658,6 +658,7 @@ public class ExportExcelUtils { private int createProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { createSubTitleProfitRow(sheet, index++); + createGrossProfitARow(budgetBean, sheet, index++); createGrossProfitRow(budgetBean, sheet, index++); // createGrossProfitMarginRow(budgetBean, sheet, index++); createContributionProfitRow(budgetBean, sheet, index++); @@ -686,6 +687,26 @@ public class ExportExcelUtils { } + private void createGrossProfitARow(BudgetBean budgetBean, XSSFSheet sheet, int index) { + Row row = sheet.createRow(index); + Cell firstCell = row.createCell(0); + firstCell.setCellStyle(style2); + firstCell.setCellType(CellType.STRING); + firstCell.setCellValue("项目毛利A(元)"); + Cell secondCell = row.createCell(1); + secondCell.setCellStyle(style2); + secondCell.setCellType(CellType.NUMERIC); + secondCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitARate())); + Cell thirdCell = row.createCell(2); + thirdCell.setCellStyle(style2); + thirdCell.setCellType(CellType.NUMERIC); + thirdCell.setCellValue(Utils.format(budgetBean.getProjectGrossProfitA())); + Cell fourthCell = row.createCell(3); + fourthCell.setCellStyle(style2); + fourthCell.setCellType(CellType.STRING); + fourthCell.setCellValue("毛利=收入总计(不含税)-成本总计(不含税)"); + } + private void createGrossProfitRow(BudgetBean budgetBean, XSSFSheet sheet, int index) { Row row = sheet.createRow(index); Cell firstCell = row.createCell(0); diff --git a/src/main/resources/application-sit.properties b/src/main/resources/application-sit.properties index ed9445c..2333a83 100644 --- a/src/main/resources/application-sit.properties +++ b/src/main/resources/application-sit.properties @@ -1,4 +1,4 @@ -spring.datasource.url=jdbc:mysql://192.168.1.100:3306/fourcal?\ +spring.datasource.url=jdbc:mysql://192.168.0.100:3306/fourcal?\ characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8&rewriteBatchedStatements=true&useSSL=false spring.datasource.username=root spring.datasource.password=Qwer123!@#$ diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index 3eec308..2600c11 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -809,11 +809,15 @@ function updateProjectContributionProfitRate() { //公司管理费用 var costCompanyManageTaxExclude = f2(inputVal("costCompanyManageTaxExclude")); + var projectGrossProfitA = f2Fixed(incomeTotalTaxExclude - costTotalTaxExclude); + var projectGrossProfitARate = f2Fixed(rate(f2(projectGrossProfitA), incomeTotalTaxExclude)); var projectGrossProfit = f2Fixed(incomeTotalTaxExclude - costTotalTaxExclude - costExpropriationTaxExclude); var projectGrossProfitRate = f2Fixed(rate(f2(projectGrossProfit), incomeTotalTaxExclude)); var projectContributionProfit = f2Fixed(f2(projectGrossProfit) - costCompanyManageTaxExclude); var projectContributionProfitRate = f2Fixed(rate(f2(projectContributionProfit), incomeTotalTaxExclude)); + $("input[name='projectGrossProfitA']").val(projectGrossProfitA); + $("input[name='projectGrossProfitARate']").val(projectGrossProfitARate); $("input[name='projectGrossProfit']").val(projectGrossProfit); $("input[name='projectGrossProfitRate']").val(projectGrossProfitRate); $("input[name='projectContributionProfit']").val(projectContributionProfit); diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index 94d1614..79d4ea0 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -614,6 +614,21 @@ hidden> + + 项目毛利A: + + + + 项目毛利A利率: + + + + + 合同金额: @@ -1646,6 +1661,12 @@ 不含税金额(元) 计算方式 + + 项目毛利A(元) + + + 毛利A=收入总计(不含税)-成本总计(不含税) + 项目毛利(元) diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 3a19fc3..588e7a6 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -506,6 +506,21 @@ hidden> + + *项目毛利A: + + + + *项目毛利A利率: + + + + + *合同金额: @@ -1362,6 +1377,12 @@ 不含税金额(元) 计算方式 + + 项目毛利A(元) + + + 毛利A=收入总计(不含税)-成本总计(不含税) + 项目毛利(元)