核算其它出库单调整
This commit is contained in:
		
							parent
							
								
									9ec6b4d52d
								
							
						
					
					
						commit
						25fcff74c7
					
				|  | @ -0,0 +1,142 @@ | ||||||
|  | package nc.bs.ic.m4i.util; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Set; | ||||||
|  | 
 | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | 
 | ||||||
|  | import nc.bs.framework.common.NCLocator; | ||||||
|  | import nc.bs.ic.general.util.GenFinanceProcess; | ||||||
|  | import nc.bs.ic.general.util.GeneralFinanceContext; | ||||||
|  | import nc.itf.uap.IUAPQueryBS; | ||||||
|  | import nc.jdbc.framework.processor.ColumnProcessor; | ||||||
|  | import nc.pubitf.ia.mi7.ic.IIAI7ForIC4ISign; | ||||||
|  | import nc.vo.ia.bill.entity.base.AbstractBaseBill; | ||||||
|  | import nc.vo.ia.mi4.entity.I4BillVO; | ||||||
|  | import nc.vo.ia.mi4.entity.I4HeadVO; | ||||||
|  | import nc.vo.ia.mi4.entity.I4ItemVO; | ||||||
|  | import nc.vo.ia.mi7.entity.I7BillVO; | ||||||
|  | import nc.vo.ia.mi7.entity.I7HeadVO; | ||||||
|  | import nc.vo.ia.mi7.entity.I7ItemVO; | ||||||
|  | import nc.vo.ic.general.define.ICBillBodyVO; | ||||||
|  | import nc.vo.ic.general.define.ICBillHeadVO; | ||||||
|  | import nc.vo.ic.general.define.ICBillVO; | ||||||
|  | import nc.vo.ic.m4a.entity.GeneralInBodyVO; | ||||||
|  | import nc.vo.ic.m4a.entity.GeneralInHeadVO; | ||||||
|  | import nc.vo.ic.m4a.entity.GeneralInVO; | ||||||
|  | import nc.vo.ic.m4i.entity.GeneralOutBodyVO; | ||||||
|  | import nc.vo.ic.m4i.entity.GeneralOutHeadVO; | ||||||
|  | import nc.vo.ic.m4i.entity.GeneralOutVO; | ||||||
|  | import nc.vo.ic.pub.util.VOEntityUtil; | ||||||
|  | import nc.vo.pub.BusinessException; | ||||||
|  | import nc.vo.pubapp.pattern.pub.SqlBuilder; | ||||||
|  | import nc.vo.scmpub.res.billtype.IABillType; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class Bill4IFinanceProcess | ||||||
|  |   extends GenFinanceProcess<GeneralOutVO, GeneralOutBodyVO> | ||||||
|  | { | ||||||
|  |   public Bill4IFinanceProcess() { super(GeneralFinanceContext.createOneDomainContext(IABillType.QTCK)); } | ||||||
|  |    | ||||||
|  |   protected void deleteIABill(String[] billids) throws BusinessException { | ||||||
|  |     ((IIAI7ForIC4ISign)NCLocator.getInstance().lookup(IIAI7ForIC4ISign.class)) | ||||||
|  |       .deleteI7ForIC4IUnsign(billids); | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   protected void insertOneDomainIAByService(AbstractBaseBill[] iaBills, GeneralOutVO[] icbills) throws BusinessException { | ||||||
|  |     String[] costorgs = loadCostInfoForCalbody( | ||||||
|  |         (ICBillHeadVO[])VOEntityUtil.getHeadVOs(icbills)); | ||||||
|  |     fillIABillCostOrg(iaBills, costorgs); | ||||||
|  |     GeneralOutVO[] _icbills = filterIcbills(icbills);//库存其它出库单筛选-华丰 | ||||||
|  |     I7BillVO[] _iaBills = filterIabills(iaBills, _icbills);//筛选核算出库库存信息-华丰 | ||||||
|  |     ((IIAI7ForIC4ISign)NCLocator.getInstance().lookup(IIAI7ForIC4ISign.class)).insertI7ForIC4ISign((I7BillVO[])_iaBills); | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |    | ||||||
|  |   //处理备料计划-转库-其它出库,如果寄存供应商有值,则这一行物料信息不生成存货核算单据 | ||||||
|  |   private I7BillVO[] filterIabills(AbstractBaseBill[] iaBills, GeneralOutVO[] icbills) throws BusinessException { | ||||||
|  |   //		I7BillVO _iabill = null; | ||||||
|  |   	ArrayList<I7BillVO> iabillsList = new ArrayList<I7BillVO>(); | ||||||
|  |   	ArrayList<I7ItemVO> itemList = new ArrayList<I7ItemVO>(); | ||||||
|  |   	 | ||||||
|  |   	ICBillBodyVO[] icBillBodys = (ICBillBodyVO[])VOEntityUtil.getBodyVOs(icbills);//获取所有出库单表体 | ||||||
|  |   	Set<String> values = VOEntityUtil.getVOsValueSet(icBillBodys, "cgeneralbid");//获取所有出库单子表主键 | ||||||
|  |   	 | ||||||
|  |   	for(int i = 0; i < iaBills.length; i++) { | ||||||
|  |   		I7BillVO iabill = (I7BillVO)iaBills[i]; | ||||||
|  |   		I7HeadVO headVO = iabill.getParentVO(); | ||||||
|  |   		I7ItemVO[] itemVOs = iabill.getChildrenVO(); | ||||||
|  |   		if(itemVOs != null && itemVOs.length > 0) { | ||||||
|  |   			for(int j = 0; j < itemVOs.length; j++) {//核算库存子表过滤筛选 | ||||||
|  |   				I7ItemVO itemVO = itemVOs[j]; | ||||||
|  |   				String csrcbid = itemVO.getCsrcbid();//获取来源单据id | ||||||
|  |   				if(values.contains(csrcbid)) { | ||||||
|  |   					itemList.add(itemVO); | ||||||
|  |   				} | ||||||
|  |   			} | ||||||
|  |   		} | ||||||
|  |   		 | ||||||
|  |   		if(itemList != null && itemList.size() > 0) {//筛选后的核算库存子表数大于0 | ||||||
|  |   			iabill.setChildrenVO(itemList.toArray(new I7ItemVO[0]));//子表设置 | ||||||
|  |   			iabillsList.add(iabill); | ||||||
|  |   		} | ||||||
|  |   		 | ||||||
|  |   	} | ||||||
|  |   	 | ||||||
|  |   	return iabillsList.toArray(new I7BillVO[0]); | ||||||
|  |   } | ||||||
|  |   	 | ||||||
|  |   	 | ||||||
|  |   //库存其它出库单筛选 | ||||||
|  |   private GeneralOutVO[] filterIcbills(GeneralOutVO[] icbills) throws BusinessException { | ||||||
|  |   //		GeneralOutVO _icbill = null; | ||||||
|  |   	ArrayList<GeneralOutVO> icbillsList = new ArrayList<GeneralOutVO>(); | ||||||
|  |   	ArrayList<GeneralOutBodyVO> itemList = new ArrayList<GeneralOutBodyVO>(); | ||||||
|  |   	 | ||||||
|  |   	for(int i = 0; i < icbills.length; i++) { | ||||||
|  |   		GeneralOutVO icbill = (GeneralOutVO)icbills[i]; | ||||||
|  |   		GeneralOutHeadVO headVO = icbill.getHead(); | ||||||
|  |   		GeneralOutBodyVO[] itemVOs = icbill.getBodys(); | ||||||
|  |   		if(itemVOs != null && itemVOs.length > 0) { | ||||||
|  |   			for(int j = 0; j < itemVOs.length; j++) {//库存子表过滤筛选 | ||||||
|  |   				GeneralOutBodyVO itemVO = itemVOs[j]; | ||||||
|  |   				String csourcetype = itemVO.getCsourcetype();//获取核算库存来源单据类型 | ||||||
|  |   				String cvmivenderid = itemVO.getCvmivenderid();//获取寄存商户id | ||||||
|  |   				String csourcebillbid = itemVO.getCsourcebillbid();//获取来源单据子表id | ||||||
|  |   				String csourcetype_zk = querySourceType(csourcebillbid);//转库单来源单据类型 | ||||||
|  |   				//处理备料计划-转库-其它出库,如果寄存供应商有值 | ||||||
|  |   				if("4K".equals(csourcetype) && StringUtils.isNotEmpty(cvmivenderid) | ||||||
|  |   						&& "55A3".equals(csourcetype_zk)) { | ||||||
|  |   					continue; | ||||||
|  |   				}else { | ||||||
|  |   					itemList.add(itemVO); | ||||||
|  |   				} | ||||||
|  |   			} | ||||||
|  |   		} | ||||||
|  |   		 | ||||||
|  |   		if(itemList != null && itemList.size() > 0) {//筛选后的核算库存子表数大于0 | ||||||
|  |   			icbill.setChildrenVO(itemList.toArray(new GeneralOutBodyVO[0]));//子表设置 | ||||||
|  |   			icbillsList.add(icbill); | ||||||
|  |   		} | ||||||
|  |   	} | ||||||
|  |   	 | ||||||
|  |   	return icbillsList.toArray(new GeneralOutVO[0]); | ||||||
|  |   } | ||||||
|  |   	 | ||||||
|  |   	 | ||||||
|  |   //转库单来源单据类型查询 | ||||||
|  |   public String querySourceType(String id) throws BusinessException { | ||||||
|  |   	if(StringUtils.isNotEmpty(id)) { | ||||||
|  |   		SqlBuilder sb = new SqlBuilder(); | ||||||
|  |   		sb.reset(); | ||||||
|  |   		sb.append("select csourcetype from ic_whstrans_b where cspecialbid = '" + id + "' and dr = 0"); | ||||||
|  |   		IUAPQueryBS querybs = NCLocator.getInstance().lookup(IUAPQueryBS.class); | ||||||
|  |   		Object result = querybs.executeQuery(sb.toString(), new ColumnProcessor()); | ||||||
|  |   		if(result != null && !"".equals(result)) { | ||||||
|  |   			return result.toString(); | ||||||
|  |   		} | ||||||
|  |   	} | ||||||
|  |   	return ""; | ||||||
|  |   } | ||||||
|  | 	 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue