LG88888888 3 vuotta sitten
vanhempi
commit
76325f796c

+ 1 - 0
src/main/java/net/chenlin/dp/modules/api/controller/SaleOrderController.java

@@ -99,6 +99,7 @@ public class SaleOrderController {
 
         service.getToaccount();
         service.ISaleOrder();
+        service.SaleOrderClass();
     }
 
     /**

+ 13 - 0
src/main/java/net/chenlin/dp/modules/api/dao/SaleOrderMapper.java

@@ -296,4 +296,17 @@ public interface SaleOrderMapper extends BaseMapper<YonyouSaleOrder> {
 	 * @return
 	 */
 	List<ISaleOrderMin>IDYDOrderMin(@Param("id")String id);
+
+	/**
+	 * 销售订单分类-退货单表头
+	 * @return
+	 */
+	List<SaleOrderFTH>SaleOrderClass();
+
+	/**
+	 * 销售订单分类-退货表体
+	 * @param id
+	 * @return
+	 */
+	List<SaleOrderFTHMin>SaleOrderClassMin(@Param("id")String id);
 }

+ 1 - 2
src/main/java/net/chenlin/dp/modules/api/mapper/AcceptOrderMapper.xml

@@ -67,10 +67,9 @@
 	</select>
 	<select id="IAcceptOrderList" resultType="net.chenlin.dp.modules.api.vo.IAcceptOrder">
 		select cvouchtype as 'vouchtype',cvouchid as 'vouchcode',convert(varchar(10),dvouchdate,120) as 'vouchdate',cdwcode as 'customercode',cdeptcode as 'departmentcode',
-		cperson as 'personcode',citem_class as 'itemclasscode',
+				(case cperson when '' then null else cperson end) as 'personcode',citem_class as 'itemclasscode',
 				citemcode as 'itemcode',cdigest as 'digest',cbankaccount as 'oppositebankcode',iamount as 'amount',
 			   citemname as 'itemname'
 		from CRM_U8_Refund where issyu8 =0 or issyu8 is null
-
 	</select>
 </mapper>

+ 22 - 13
src/main/java/net/chenlin/dp/modules/api/mapper/SaleOrderMapper.xml

@@ -120,7 +120,7 @@
 			#{saleOrderBJMins.iNatDisCount},
 			#{saleOrderBJMins.cMemo},
 		 	#{saleOrderBJMins.iTaxRate} ,
-		 	#{saleOrderBJMins.KL},
+		 	'100',
 		    #{saleOrderBJMins.cItemCode} ,
 		  #{saleOrderBJMins.cItem_class},
 		  #{saleOrderBJMins.cItemName},
@@ -347,14 +347,14 @@
 
 
 	<select id="SaleOrderBJList" resultType="net.chenlin.dp.modules.api.vo.SaleOrderBJ">
-		select ID,convert(varchar(10),ddate,120) as 'dDate',cCode,cCusCode,cDepCode,cPersonCode,cexch_name as 'cexchName',iExchRate,(iTaxRate*100) as 'iTaxRate',cMemo,cMaker,cVerifier,cCloser,cBusType
+		select ID,convert(varchar(10),ddate,120) as 'dDate',cCode,cCusCode,cDepCode,(case cpersoncode when '' then null else cpersoncode end)as 'cpersoncode',cexch_name as 'cexchName',iExchRate,(iTaxRate*100) as 'iTaxRate',cMemo,cMaker,cVerifier,cCloser,cBusType
 		from  CRM_U8_SA_QuoMain where issyu8 =0 or issyu8 is null
 
 	</select>
 
 	<select id="selectCode" resultType="net.chenlin.dp.modules.api.vo.SaleOrderBJMin">
-		select a.ID,a.AutoID,a.irowno,a.cInvCode,isnull(a.iQuantity,0) as 'iQuantity',a.cUnitID,isnull(a.iInvExchRate,0)as 'iInvExchRate',isnull(a.iNum,0)as 'iNum',isnull(a.iQuotedPrice,0)as 'iQuotedPrice',isnull(a.iUnitPrice,0)as 'iUnitPrice',isnull(a.iTaxUnitPrice,0)as 'iTaxUnitPrice',isnull(a.iNatMoney,0)as 'iNatMoney',isnull(a.iNatTax,0)as 'iNatTax',isnull(a.iNatSum,0) as 'iNatSum',
-			  isnull(a.iNatDisCount,0)as 'iNatDisCount' ,a.cMemo,(a.iTaxRate*100) as 'iTaxRate',isnull(a.KL,0)as 'KL',b.cItemCode,b.cItem_class,b.cItemName,b.cItem_CName,a.cCusInvCode,a.cCusInvName,isnull(a.iMoney,0)as 'iMoney',isnull(a.iTax,0)as 'iTax',isnull(a.iSum,0)as 'iSum',isnull(a.iDisCount,0)as 'iDisCount',isnull(a.iNatUnitPrice,0)as 'iNatUnitPrice' from  CRM_U8_SA_QuoDetails a left join CRM_U8_SA_QuoMain b on a.id=b.id
+		select a.ID,a.AutoID,a.irowno,a.cInvCode,isnull(a.iQuantity,0) as 'iQuantity',a.cUnitID,isnull(a.iInvExchRate,0)as 'iInvExchRate',isnull(a.iNum,0)as 'iNum',isnull(a.iQuotedPrice,0)as 'iQuotedPrice',isnull(a.iUnitPrice,0)as 'iUnitPrice',isnull(a.iTaxUnitPrice,0)as 'iTaxUnitPrice',isnull(a.iNatMoney,0)as 'iNatMoney',isnull(a.iNatTax,0)as 'iNatTax',isnull(a.iSum,0) as 'iNatSum',
+			  isnull(a.iNatDisCount,0)as 'iNatDisCount' ,a.cMemo,isnull(a.iTaxRate,0) as 'iTaxRate',isnull(a.KL,0)as 'KL',b.cItemCode,b.cItem_class,b.cItemName,b.cItem_CName,a.cCusInvCode,a.cCusInvName,isnull(a.iMoney,0)as 'iMoney',isnull(a.iTax,0)as 'iTax',isnull(a.iSum,0)as 'iSum',isnull(a.iDisCount,0)as 'iDisCount',isnull(a.iNatUnitPrice,0)as 'iNatUnitPrice' from  CRM_U8_SA_QuoDetails a left join CRM_U8_SA_QuoMain b on a.id=b.id
 				where a.id=#{id}
 	</select>
 	<select id="CrmSaleOrderList" resultType="net.chenlin.dp.modules.api.vo.YonyouSaleOrder">
@@ -413,11 +413,11 @@
 	</select>
 	<select id="CrmKSOrderTHList" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTH">
 		select cVouchID,id as 'dlid',
-				   cdlcode,cvouchtype,cstcode,ddate,crdcode,cdepcode,cpersoncode,ccuscode,csccode,cshipaddress,cexch_name as 'cexchname',iexchrate,
+				   cdlcode,cvouchtype,cstcode,ddate,crdcode,cdepcode,(case cpersoncode when '' then null else cpersoncode end)as 'cpersoncode',ccuscode,csccode,cshipaddress,cexch_name as 'cexchname',iexchrate,
 			   itaxrate,breturnflag, cmaker,ccusname,cbustype from crm_u8_DispatchList where issyu8 =0 or issyu8 is null
 	</select>
 	<select id="CrmKSOrderTHMinList" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTHMin">
-		select  a.autoid,a.dlid,a.icorid,a.cwhcode,a.cinvcode,isnull((a.iquantity*-1 ),'0')as 'iquantity',isnull((a.inum*-1),'0') as 'inum',isnull(a.iunitprice,'0') as 'iunitprice' ,isnull(a.itaxunitprice,'0') as 'itaxunitprice',isnull((a.imoney*-1),'0') as 'imoney',isnull((a.itax*-1),'0') as 'itax',isnull((a.isum*-1),'0')as 'isum', isnull(a.inatunitprice,'0') as 'inatunitprice',isnull((a.inatmoney*-1),'0' )as 'inatmoney',isnull((a.inattax*-1 ),'0')as 'inattax',isnull((a.inatsum*-1),'0') as 'inatsum',a.isosid,a.cinvname,a.itaxrate,b.citemcode,b.citem_class citemclass,a.iinvexchrate,a.cunitid,a.csocode,a.ccusinvcode,a.ccusinvname
+		select  a.autoid,a.dlid,a.icorid,a.cwhcode,a.cinvcode,isnull((a.iquantity*-1 ),'0')as 'iquantity',isnull((a.inum*-1),'0') as 'inum',isnull(a.iunitprice,'0') as 'iunitprice' ,isnull(a.itaxunitprice,'0') as 'itaxunitprice',isnull((a.imoney*-1),'0') as 'imoney',isnull((a.itax*-1),'0') as 'itax',isnull((a.isum*-1),'0')as 'isum',isnull(a.iTaxRate,'0') as 'itaxrate' ,isnull(a.inatunitprice,'0') as 'inatunitprice',isnull((a.inatmoney*-1),'0' )as 'inatmoney',isnull((a.inattax*-1 ),'0')as 'inattax',isnull((a.isum*-1),'0') as 'inatsum',a.isosid,a.cinvname,a.itaxrate,b.citemcode,b.citem_class citemclass,a.iinvexchrate,a.cunitid,a.csocode,a.ccusinvcode,a.ccusinvname
 		from  CRM_U8_DispatchItem a
 				  left join CRM_U8_DispatchList b on a.mid=b.id
  where a.Mid=#{id}
@@ -425,12 +425,12 @@
 	</select>
 	<select id="CrmKSDOrderFHList" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTH">
 		select id as 'dlid',cVouchID,
-				   cdlcode,cvouchtype,cstcode,ddate,crdcode,cdepcode,cpersoncode,ccuscode,csccode,cshipaddress,cexch_name as 'cexchname',iexchrate,
+				   cdlcode,cvouchtype,cstcode,ddate,crdcode,cdepcode,(case cpersoncode when '' then null else cpersoncode end)as 'cpersoncode',ccuscode,csccode,cshipaddress,cexch_name as 'cexchname',iexchrate,
 			   (itaxrate*100) as 'itaxrate' ,breturnflag, cmaker,ccusname,cbustype from CRM_U8_Deduction where issyu8 =0 or issyu8 is null
 	</select>
 	<select id="CrmKSDOrderFHMin" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTHMin">
 		select  a.autoid,a.dlid,a.cinvcode,isnull((a.iquantity*-1),'0') as 'iquantity', isnull(a.iunitprice,'0') as 'iunitprice',isnull(a.itaxunitprice,'0') as 'itaxunitprice',isnull((a.imoney*-1),'0') as 'imoney',isnull((a.itax*-1),'0')as 'itax',isnull((a.isum*-1),'0')as 'isum',
-				isnull(a.inatunitprice,'0') as 'inatunitprice',isnull((a.inatmoney*-1),'0')as 'inatmoney',isnull((a.inattax*-1),'0') as 'inattax',isnull((a.inatsum*-1),'0') as 'inatsum',a.cinvname,(a.itaxrate *100) as 'itaxrate',b.citemcode,b.citem_class as 'citemclass',a.citemname,
+				isnull(a.inatunitprice,'0') as 'inatunitprice',isnull((a.inatmoney*-1),'0')as 'inatmoney',isnull((a.inattax*-1),'0') as 'inattax',isnull((a.isum*-1),'0') as 'inatsum',a.cinvname,a.itaxrate ,b.citemcode,b.citem_class as 'citemclass',a.citemname,
 				a.citem_cname as 'citemcname', a.cunitid,a.cdefine33
 		from  CRM_U8_DeductionItem a left join CRM_U8_Deduction b
 											   on a.mid=b.id
@@ -486,7 +486,7 @@
 		select max(DLID) from DispatchList
 	</select>
 	<select id="CrmISYDOrder" resultType="net.chenlin.dp.modules.api.vo.ISaleOrder">
-		select  id as 'closer',convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',cpersoncode as 'personcode',
+		select  id as 'closer',convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',(case cpersoncode when '' then null else cpersoncode end) as 'personcode',
 				ccusoaddress as 'sendaddress',(itaxrate*100) as 'taxrate',cmemo as 'memo',cmaker as 'maker',ccusname as 'cusname'
 		from  CRM_U8_customEntity12__c where issyu8 =0 or issyu8 is null
 </select>
@@ -508,10 +508,10 @@
 		where a.mid=#{id}
 	</select>
 	<select id="ISaleOrderList" resultType="net.chenlin.dp.modules.api.vo.ISaleOrder">
-		select id as 'closer', convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',
+		select id as 'closer',(case cpersoncode when '' then null else cpersoncode end) as 'personcode', convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',
 
 			(iTaxRate*100) as 'taxrate', cmaker as 'maker',ccusname as 'cusname'
-		from CRM_U8_SO_SOMain where issyu8 =0 or issyu8 is null
+		from CRM_U8_SO_SOMain where (issyu8 =0 or issyu8 is null) and cBusType='11010003500001'
 	</select>
 	<select id="ISaleOrderMin" resultType="net.chenlin.dp.modules.api.vo.ISaleOrderMin">
 
@@ -525,7 +525,8 @@
 				a.iQuotedPrice as 'quotedprice',
 				a.iUnitPrice as 'unitprice',
 				a.iTaxUnitPrice as 'taxunitprice',
-				a.KL as 'discountrate',
+			<!--	(a.KL*100) as 'discountrate',
+				(a.KL*100) as 'discountrate2',-->
 				a.cInvName as 'inventoryname',
 				(a.iTaxRate*100)as 'taxrate',
 				a.iInvExchRate as 'unitrate',
@@ -534,7 +535,7 @@
 				from CRM_U8_SO_SOMainItem a where a.id=#{id}
 	</select>
 	<select id="IDYDOrder" resultType="net.chenlin.dp.modules.api.vo.ISaleOrder">
-		select  id as 'closer',convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',cpersoncode as 'personcode',
+		select  id as 'closer',convert(varchar(10),ddate,120)  as 'date',csocode as 'code',ccuscode as 'custcode',cdepcode as 'deptcode',(case cpersoncode when '' then null else cpersoncode end) as 'personcode',
 				ccusoaddress as 'sendaddress',(itaxrate*100) as 'taxrate',cmemo as 'memo',cmaker as 'maker',ccusname as 'cusname'
 		from crm_u8_customentity4__c where issyu8 =0 or issyu8 is null
 	</select>
@@ -546,6 +547,14 @@
 	<select id="SaleOrderBJMinMaxId" resultType="java.lang.String">
 		select max(AutoID) from SA_QuoDetails
 	</select>
+	<select id="SaleOrderClass" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTH">
+		select ddate,(case cpersoncode when '' then null else cpersoncode end)as 'cpersoncode',csocode as 'cVouchID',ccuscode,cdepcode,(itaxrate*100)as 'itaxrate',cmaker,ccusname,id as 'dlid' from CRM_U8_SO_SOMain where (issyu8 =0 or issyu8 is null) and cBusType='11010003500002'	</select>
+	<select id="SaleOrderClassMin" resultType="net.chenlin.dp.modules.api.vo.SaleOrderFTHMin">
+		select  a.cinvcode,isnull((a.iquantity*-1 ),'0')as 'iquantity',isnull((a.inum*-1),'0') as 'inum',isnull(a.iunitprice,'0') as 'iunitprice' ,isnull(a.itaxunitprice,'0') as 'itaxunitprice',isnull((a.imoney*-1),'0') as 'imoney',isnull((a.isum*-1),'0')as 'isum',isnull(a.iTaxRate,'0') as 'itaxrate' ,isnull(a.inatunitprice,'0') as 'inatunitprice',isnull((a.inatmoney*-1),'0' )as 'inatmoney',isnull((a.inattax*-1 ),'0')as 'inattax',isnull((a.isum*-1),'0') as 'inatsum',a.cinvname,a.itaxrate,b.citemcode,b.citem_class citemclass,a.iinvexchrate,a.cunitid,a.csocode,a.ccusinvcode,a.ccusinvname
+		from  CRM_U8_SO_SOMainItem a
+				  left join CRM_U8_SO_SOMain b on a.id=b.id
+				where a.id=#{id}
+	</select>
 
 
 </mapper>

+ 207 - 2
src/main/java/net/chenlin/dp/modules/api/service/SaleOrderService.java

@@ -26,6 +26,7 @@ import net.chenlin.dp.modules.sys.service.impl.SysUserServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 public class SaleOrderService {
@@ -446,6 +447,40 @@ public class SaleOrderService {
                                 ls.setAutoid(c.toString());
                                 ls.setDlid(add.toString());
                                 s=c.toString();
+                                    BigDecimal sum=new BigDecimal(ls.getIquantity());//数量
+                                    BigDecimal dj=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                    String iUnitPrice=dj.toString();
+                                    String iNatUnitPrice=dj.toString();
+                                    String iMoney=dj.multiply(sum).toString();
+                                    String iNatMoney=dj.multiply(sum).toString();
+                                    String tax="0";
+                                if (!ls.getItaxrate().equals("0.00")&&!ls.getItaxrate().equals("0")){
+                                    BigDecimal count=new BigDecimal("1");
+                                    BigDecimal taxrater=new BigDecimal("100");
+
+                                    //BigDecimal iTaxUnitPrice=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                    BigDecimal iTaxRate=new BigDecimal(ls.getItaxrate());
+                                    BigDecimal iTaxRates = iTaxRate.add(count);//税率
+                                    BigDecimal divide =  dj.divide(iTaxRates,8, BigDecimal.ROUND_DOWN);//无税单价
+                                    BigDecimal subtract = dj.subtract(divide);
+                                    BigDecimal multiply1 = sum.multiply(subtract);//税额
+                                    BigDecimal multiply = sum.multiply(divide);//无税金额
+                                    tax=multiply1.toString();
+                                    iUnitPrice=divide.toString();//原币无税单价
+                                    iNatUnitPrice=divide.toString();//本币无税单价
+                                    iMoney=multiply.toString();//原币无税金额
+                                    iNatMoney=multiply.toString();//本币无税金额
+
+                                    ls.setItaxrate(iTaxRate.multiply(taxrater).toString());
+                                }
+                                ls.setIunitprice(iUnitPrice);
+                                ls.setInatunitprice(iNatUnitPrice);
+                                ls.setImoney(iMoney);
+                                ls.setInatmoney(iNatMoney);
+                                ls.setItax(tax);
+                                ls.setInattax(tax);
+                                ls.setIsum(dj.multiply(sum).toString());
+                                ls.setInatsum(dj.multiply(sum).toString());
                             }
 
                             DynamicDataSource.setDataSource("slave-data-source");
@@ -551,10 +586,10 @@ public class SaleOrderService {
                      String cid=i.getID();
                     i.setID(add.toString());
                     DynamicDataSource.setDataSource("slave-data-source");
-                    int sum = saleOrderMapper.UInsertSaleOrderBJ(i);
+                    int sumt = saleOrderMapper.UInsertSaleOrderBJ(i);
                     DynamicDataSource.setDataSource("");
                     DynamicDataSource.setDataSource("last-data-source");
-                    if (sum>0){
+                    if (sumt>0){
                         saleOrderMapper.UpdateSaleOrderBJ(cid);
                     }
                     List<SaleOrderBJMin> saleOrderBJMins = saleOrderMapper.selectCode(cid);
@@ -567,6 +602,39 @@ public class SaleOrderService {
                             t.setID(add.toString());
                             t.setAutoID(add1.toString());
                             st=add1.toString();
+                            BigDecimal sum=new BigDecimal(t.getiQuantity());//数量
+                            BigDecimal dj=new BigDecimal(t.getiTaxUnitPrice());//单价
+                            String iUnitPrice=dj.toString();
+                            String iNatUnitPrice=dj.toString();
+                            String iMoney=dj.multiply(sum).toString();
+                            String iNatMoney=dj.multiply(sum).toString();
+                            String tax="0";
+                            if (!t.getiTaxRate().equals("0.00")&&!t.getiTaxRate().equals("0")){
+                                BigDecimal count=new BigDecimal("1");
+                                BigDecimal taxrater=new BigDecimal("100");
+                                //BigDecimal iTaxUnitPrice=new BigDecimal(t.getiTaxUnitPrice());//含税单价
+                                BigDecimal iTaxRate=new BigDecimal(t.getiTaxRate());
+                                BigDecimal iTaxRates = iTaxRate.add(count);//税率
+                                BigDecimal divide =  dj.divide(iTaxRates,8, BigDecimal.ROUND_DOWN);//无税单价
+                                BigDecimal subtract = dj.subtract(divide);
+                                BigDecimal multiply1 = sum.multiply(subtract);//税额
+                                BigDecimal multiply = sum.multiply(divide);//无税金额
+                                tax=multiply1.toString();
+                                iUnitPrice=divide.toString();//原币无税单价
+                                iNatUnitPrice=divide.toString();//本币无税单价
+                                iMoney=multiply.toString();//原币无税金额
+                                iNatMoney=multiply.toString();//本币无税金额
+
+                                t.setiTaxRate(iTaxRate.multiply(taxrater).toString());
+                            }
+                            t.setiUnitPrice(iUnitPrice);
+                            t.setiNatUnitPrice(iNatUnitPrice);
+                            t.setiMoney(iMoney);
+                            t.setiNatMoney(iNatMoney);
+                            t.setiTax(tax);
+                            t.setiNatTax(tax);
+                            t.setiSum(dj.multiply(sum).toString());
+                            t.setiNatSum(dj.multiply(sum).toString());
                         }
                         DynamicDataSource.setDataSource("slave-data-source");
                         saleOrderMapper.UInsertSaleOrderBJMin(saleOrderBJMins);
@@ -628,6 +696,40 @@ public class SaleOrderService {
                                 ls.setAutoid(c.toString());
                                 ls.setDlid(add.toString());
                                 s=c.toString();
+                                BigDecimal sum=new BigDecimal(ls.getIquantity());//数量
+                                BigDecimal dj=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                String iUnitPrice=dj.toString();
+                                String iNatUnitPrice=dj.toString();
+                                String iMoney=dj.multiply(sum).toString();
+                                String iNatMoney=dj.multiply(sum).toString();
+                                String tax="0";
+                                if (!ls.getItaxrate().equals("0.00")&&!ls.getItaxrate().equals("0")){
+                                    BigDecimal count=new BigDecimal("1");
+                                    BigDecimal taxrater=new BigDecimal("100");
+                                    //BigDecimal iTaxUnitPrice=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                    BigDecimal iTaxRate=new BigDecimal(ls.getItaxrate());
+                                    BigDecimal iTaxRates = iTaxRate.add(count);//税率
+                                    BigDecimal divide =  dj.divide(iTaxRates, 8, BigDecimal.ROUND_DOWN);//无税单价
+                                    BigDecimal subtract = dj.subtract(divide);
+                                    BigDecimal multiply1 = sum.multiply(subtract);//税额
+                                    BigDecimal multiply = sum.multiply(divide);//无税金额
+                                    tax=multiply1.toString();
+                                    iUnitPrice=divide.toString();//原币无税单价
+                                    iNatUnitPrice=divide.toString();//本币无税单价
+                                    iMoney=multiply.toString();//原币无税金额
+                                    iNatMoney=multiply.toString();//本币无税金额
+
+                                    ls.setItaxrate(iTaxRate.multiply(taxrater).toString());
+                                }
+                                ls.setIunitprice(iUnitPrice);
+                                ls.setInatunitprice(iNatUnitPrice);
+                                ls.setImoney(iMoney);
+                                ls.setInatmoney(iNatMoney);
+                                ls.setItax(tax);
+                                ls.setInattax(tax);
+                                ls.setIsum(dj.multiply(sum).toString());
+                                ls.setInatsum(dj.multiply(sum).toString());
+
                             }
                             DynamicDataSource.setDataSource("slave-data-source");
                             saleOrderMapper.UAddSaleOrderFTHMin(saleOrderFTHMins);
@@ -923,6 +1025,109 @@ public class SaleOrderService {
 
     }
 
+    /**
+     * 销售订单分类-退货
+     * @param saleOrder
+     * @return
+     */
+    public void SaleOrderClass(){
+        try {
+            DynamicDataSource.setDataSource("last-data-source");
+            List<SaleOrderFTH> saleOrderFTHS = saleOrderMapper.SaleOrderClass();
+            DynamicDataSource.setDataSource("");
+            DynamicDataSource.setDataSource("slave-data-source");
+            String id = saleOrderMapper.SaleOrderFTHMaxId();
+            String s = saleOrderMapper.CrmSaleOrderCode();
+            DynamicDataSource.setDataSource("");
+            if (s==null||s.equals("")){
+                s="10000";
+            }if (id==null||id.equals("")){
+                id="10000";
+            }
+            if (saleOrderFTHS!=null&&saleOrderFTHS.size()>0){
+                for (SaleOrderFTH i:saleOrderFTHS){
+                    BigDecimal bigDecimal=new BigDecimal(id);
+                    BigDecimal bigDecimal1=new BigDecimal("10");
+                    BigDecimal add = bigDecimal.add(bigDecimal1);
+                    String cid=i.getDlid();
+                    i.setPoid("75");
+                    i.setBreturnflag("1");
+                    i.setDlid(add.toString());
+                    i.setCdlcode("XSFH"+add.toString());
+                    DynamicDataSource.setDataSource("slave-data-source");
+                    int i1 = saleOrderMapper.UAddSaleOderFTH(i);
+                    DynamicDataSource.setDataSource("");
+                    if (i1>0){
+                        DynamicDataSource.setDataSource("last-data-source");
+                        saleOrderMapper.UpdateSaleOrder(cid);
+                        DynamicDataSource.setDataSource("");
+
+                        DynamicDataSource.setDataSource("last-data-source");
+                        List<SaleOrderFTHMin> saleOrderFTHMins = saleOrderMapper.SaleOrderClassMin(cid);
+                        DynamicDataSource.setDataSource("");
+                        if (saleOrderFTHMins!=null &&saleOrderFTHMins.size()>0){
+                            for (SaleOrderFTHMin ls:saleOrderFTHMins){
+                                BigDecimal a=new BigDecimal(s);
+                                BigDecimal b=new BigDecimal("10");
+                                BigDecimal c = a.add(b);
+                                ls.setAutoid(c.toString());
+                                ls.setDlid(add.toString());
+                                s=c.toString();
+                                BigDecimal sum=new BigDecimal(ls.getIquantity());//数量
+                                BigDecimal dj=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                String iUnitPrice=dj.toString();
+                                String iNatUnitPrice=dj.toString();
+                                String iMoney=dj.multiply(sum).toString();
+                                String iNatMoney=dj.multiply(sum).toString();
+                                String tax="0";
+                                if (!ls.getItaxrate().equals("0.00")&&!ls.getItaxrate().equals("0")){
+                                    BigDecimal count=new BigDecimal("1");
+                                    BigDecimal taxrater=new BigDecimal("100");
+                                    //BigDecimal iTaxUnitPrice=new BigDecimal(ls.getItaxunitprice());//含税单价
+                                    BigDecimal iTaxRate=new BigDecimal(ls.getItaxrate());
+                                    BigDecimal iTaxRates = iTaxRate.add(count);//税率
+                                    BigDecimal divide =  dj.divide(iTaxRates, 8, BigDecimal.ROUND_DOWN);//无税单价
+                                    BigDecimal subtract = dj.subtract(divide);
+                                    BigDecimal multiply1 = sum.multiply(subtract);//税额
+                                    BigDecimal multiply = sum.multiply(divide);//无税金额
+                                    tax=multiply1.toString();
+                                    iUnitPrice=divide.toString();//原币无税单价
+                                    iNatUnitPrice=divide.toString();//本币无税单价
+                                    iMoney=multiply.toString();//原币无税金额
+                                    iNatMoney=multiply.toString();//本币无税金额
+
+                                    ls.setItaxrate(iTaxRate.multiply(taxrater).toString());
+                                }
+                                ls.setIunitprice(iUnitPrice);
+                                ls.setInatunitprice(iNatUnitPrice);
+                                ls.setImoney(iMoney);
+                                ls.setInatmoney(iNatMoney);
+                                ls.setItax(tax);
+                                ls.setInattax(tax);
+                                ls.setIsum(dj.multiply(sum).toString());
+                                ls.setInatsum(dj.multiply(sum).toString());
+
+                            }
+                            DynamicDataSource.setDataSource("slave-data-source");
+                            saleOrderMapper.UAddSaleOrderFTHMin(saleOrderFTHMins);
+                            DynamicDataSource.setDataSource("");
+                        }
+                    }
+
+
+                    id=add.toString();
+
+
+                }
+            }
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+
     /**
      * u8接口销售订单
      * @throws OpenAPIException