Prechádzať zdrojové kódy

Merge branch 'master' of http://210.51.45.41:3000/itcat_admin/aws_donenow

HULEI 3 týždňov pred
rodič
commit
4416483aba

+ 66 - 24
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractCommissionService.java

@@ -147,7 +147,13 @@ public class contractCommissionService {
 
             } else {
 
-                List<RowMap> bills = DBSql.getMaps("SELECT a.* FROM VIEW_EU_DNCTT_INVOICE_DETAIL a WHERE a.CONTRACT_ID =? AND a.RECEIVE_AMOUNT>0 AND  a.INVOICE_AMOUNT = 0 AND NOT EXISTS( SELECT 1 FROM BO_EU_DNCTT_SALES_COMMISSION_PERIOD b WHERE b.SALES_COMMISSION_ID =? AND b.CONTRACT_ID = a.CONTRACT_ID AND b.PAY_AMOUNT > 0 AND b.INVOICE_DETAIL_ID = a.ID)", new Object[]{commission.getString("CONTRACT_ID"), commission.getString("ID")});
+                String CONTRACT_COST_ID = commission.getString("CONTRACT_COST_ID");
+                String CONTRACT_SERVICE_ID = commission.getString("CONTRACT_SERVICE_ID");
+
+                if (StringUtils.isBlank(CONTRACT_COST_ID) && StringUtils.isBlank(CONTRACT_SERVICE_ID))
+                    continue;
+
+                List<RowMap> bills = DBSql.getMaps("SELECT a.* FROM VIEW_EU_DNCTT_INVOICE_DETAIL a WHERE a.CONTRACT_ID =? AND a.RECEIVE_AMOUNT > 0 AND a.INVOICE_AMOUNT = 0 AND NOT EXISTS( SELECT 1 FROM BO_EU_DNCTT_SALES_COMMISSION_PERIOD b WHERE b.SALES_COMMISSION_ID =? AND b.CONTRACT_ID = a.CONTRACT_ID AND b.PAY_AMOUNT > 0 AND b.INVOICE_DETAIL_ID = a.ID) AND EXISTS ( SELECT 1 FROM BO_EU_DNCRM_ACCOUNT_DEDUCTION c WHERE c.ID = a.ACCOUNT_DEDUCTION_ID AND ( ( c.TYPE_ID = 1325 AND FIND_IN_SET( c.OBJECT_ID, ? )) OR ( c.TYPE_ID = 1321 AND FIND_IN_SET( c.OBJECT_ID, ? ) ) ) )", new Object[]{commission.getString("CONTRACT_ID"), commission.getString("ID"), CONTRACT_SERVICE_ID, CONTRACT_COST_ID});
 
                 serviceLogger.info("获取付款的收费条目:" + bills.size());
 
@@ -171,6 +177,9 @@ public class contractCommissionService {
                     }
                     //获取合同服务的周期
                     RowMap service = DBSql.getMap("SELECT b.PERIOD_BEGIN_DATE,b.PERIOD_END_DATE,b.PERIOD_COST,b.CONTRACT_SERVICE_ID from BO_EU_DNCRM_ACCOUNT_DEDUCTION a JOIN BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD b ON a.OBJECT_ID=b.ID AND a.TYPE_ID=1325 AND a.ID=? ", new Object[]{ACCOUNT_DEDUCTION_ID});
+
+                    RowMap ded = DBSql.getMap("select * from BO_EU_DNCRM_ACCOUNT_DEDUCTION where ID=?", new Object[]{ACCOUNT_DEDUCTION_ID});
+
                     if (service != null) {
                         period.set("CONTRACT_SERVICE_ID", service.get("CONTRACT_SERVICE_ID"));
                         period.set("PERIOD_BEGIN_DATE", service.get("PERIOD_BEGIN_DATE"));//周期开始时间
@@ -179,7 +188,7 @@ public class contractCommissionService {
 
                         //period.set("COST_BF_INCLUDE_TAX", bill.get(""));//上期结转成本(含税)
 
-                        //上期的成本-已收+上期结转成本(含税)
+                        //上期的成本-已收+上期结转成本(含税)
                         RowMap lastPeriod = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_SALES_COMMISSION_PERIOD WHERE SALES_COMMISSION_ID=? AND CONTRACT_SERVICE_ID=? and INVOICE_DETAIL_ID=? ORDER BY PERIOD_BEGIN_DATE DESC", new Object[]{commission.getString("ID"), service.get("CONTRACT_SERVICE_ID"), bill.getString("ID")});
                         if (lastPeriod != null) {
                             BigDecimal RECEIVED_DOLLARS_INCLUDE_TAX = TypeUtil.convert(lastPeriod.get("RECEIVED_DOLLARS_INCLUDE_TAX"), BigDecimal.class);
@@ -196,7 +205,6 @@ public class contractCommissionService {
                             }
                         }
 
-
                         RowMap contractService = DBSql.getMap("SELECT IS_CTRTAX_APPLIED,TAX_CATEGORY_ID,VAT_TAX,PURCHASE_TAX_CATEGORY_ID FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE ID=?", new Object[]{service.get("CONTRACT_SERVICE_ID")});
                         if (contractService != null) {
 
@@ -214,6 +222,12 @@ public class contractCommissionService {
                     } else {
                         period.set("PERIOD_BEGIN_DATE", bill.get("ITEM_DATE"));//计费日期
                         period.set("PERIOD_END_DATE", bill.get("ITEM_DATE"));//计费日期
+                        period.set("EXTENDED_COST", ded.get("EXTENDED_COST"));//本期成本(含税)
+
+                        //应收用的税
+                        RowMap taxcate = DBSql.getMap("SELECT NAME,EXT1 FROM BO_EU_DND_GENERAL WHERE OID = ? AND ORGID=?", new Object[]{ded.getString("TAX_CATEGORY_ID"), uc.getCompanyModel().getId()});
+                        shou_tax = TypeUtil.convert(taxcate.get("EXT1"), BigDecimal.class);
+
                     }
 
                     period.set("RECEIVABLE_DOLLARS_INCLUDE_TAX", bill.get("DOLLARS"));//本期应收款(含税)
@@ -239,38 +253,66 @@ public class contractCommissionService {
 
                     switch (RULE_CATE) {
                         case "4647": {
-                            //销售额百分比:针对已经全部收款的合同服务进行生成,创建一条合同佣金周期记录
-                            //佣金金额:本期已收款(不含税)/(1+配置表税率),注意计费项必须是全部付款了,才能提佣金,已收款必须是完整支付的计费项的金额之和
-                            COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
-
-                            BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
-
-                            COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
-
-                            COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
-                            period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
+                            if (commission.getString("INCLUDE_TAX").equals("1")) {
+                                //销售额百分比:针对已经全部收款的合同服务进行生成,创建一条合同佣金周期记录
+                                //佣金金额:本期已收款(不含税)/(1+配置表税率),注意计费项必须是全部付款了,才能提佣金,已收款必须是完整支付的计费项的金额之和
+                                COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
+                                BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
+                                period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
+                            } else {
+                                //使用不含税 已收款
+                                COMMISSION_DOLLARS = TypeUtil.convert(period.get("RECEIVED_DOLLARS"), BigDecimal.class);
+                                BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
+                                period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
+                            }
                         }
                         break;
                         case "4648": {
                             //销售净利百分比:针对已经全部收款的合同服务进行生成,创建一条合同佣金周期记录
                             BigDecimal RATIO = TypeUtil.convert(commission.get("RATIO"), BigDecimal.class);
+                            //使用含税价
+                            if (commission.getString("INCLUDE_TAX").equals("1")) {
+                                COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
+
+                                //本期成本(含税)
+                                if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
+                                    COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class));
+
+                                //上期结转成本(含税)
+                                if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
+                                    COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
+
+                                period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
+
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
 
-                            COMMISSION_DOLLARS = TypeUtil.convert(bill.get("RECEIVE_AMOUNT"), BigDecimal.class);
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
+                                period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
 
-                            //本期成本(含税)
-                            if (period.containsKey("COST_INCLUDE_TAX") && period.get("COST_INCLUDE_TAX") != null)
-                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_INCLUDE_TAX"), BigDecimal.class));
+                            } else {
+                                //使用不含税价
+                                COMMISSION_DOLLARS = TypeUtil.convert(period.get("RECEIVED_DOLLARS"), BigDecimal.class);//不含税已收
 
-                            //上期结转成本(含税)
-                            if (period.containsKey("COST_BF_INCLUDE_TAX") && period.get("COST_BF_INCLUDE_TAX") != null)
-                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF_INCLUDE_TAX"), BigDecimal.class));
+                                //本期成本(含税)
+                                if (period.containsKey("COST") && period.get("COST") != null)
+                                    COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST"), BigDecimal.class));
 
-                            period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
+                                //上期结转成本(含税)
+                                if (period.containsKey("COST_BF") && period.get("COST_BF") != null)
+                                    COMMISSION_DOLLARS = COMMISSION_DOLLARS.subtract(TypeUtil.convert(period.get("COST_BF"), BigDecimal.class));
 
-                            COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
+                                period.set("NET_PROFIT", COMMISSION_DOLLARS);//利润
+
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.multiply(RATIO).divide(BigDecimal.valueOf(100), 10, BigDecimal.ROUND_HALF_UP);
 
-                            COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
-                            period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
+                                COMMISSION_DOLLARS = COMMISSION_DOLLARS.divide(BigDecimal.ONE.add(tax), 10, BigDecimal.ROUND_HALF_UP);
+                                period.set("COMMISSION_DOLLARS", COMMISSION_DOLLARS);//佣金金额
+
+                            }
 
                         }
                         break;

+ 1 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -2921,6 +2921,7 @@ public class contractService {
                 cad.set("ACCOUNT_ID", ca.getString("ID"));//客户
                 cad.set("QUANTITY", ccc.get("QUANTITY"));//数量
                 cad.set("TAX_CATEGORY_NAME", tax_category_name);
+                cad.set("TAX_CATEGORY_ID", TAX_CATEGORY_ID);
                 cad.set("TAX_REGION_NAME", tax_region_name);
                 cad.set("EFFECTIVE_TAX_RATE", tax_rate);
                 cad.set("PURCHASE_ORDER_NO", ccc.getString("PURCHASE_ORDER_NO"));//采购订单号