NC供应链销售订单询价业务逻辑的整理和开发指导

        询价事件的业务过程分为两步:询销售价格、通过询价信息(价格+折扣)算金额等。如果需要修改过程中的价格折扣等信息,则第一步完成后则是最好的契机。下面的代码演示了大概的修改方法。

public class so001ClientUIPlugin extends ScmUIPluginBase {
	@SuppressWarnings({ "restriction", "deprecation" })
	@Override
	public void afterEdit(BillEditEvent e, SCMUIContext ctx) {
		if (e.getKey().equals("nnumber")) {
			// ctx.getBillCardPanel().getBillValueVO(SaleOrderVO., headVOName, bodyVOName);
			SaleorderBVO[] SaleorderBVOs = (SaleorderBVO[]) ctx.getBillCardPanel().getBillData().getBodyValueVOs(SaleorderBVO.class.getName());
			SaleorderBVO saleorderBVO=SaleorderBVOs[e.getRow()];
			SaleorderHVO saleorderHVO=(SaleorderHVO) ctx.getBillCardPanel().getBillData().getHeaderValueVO(SaleorderHVO.class.getName());
			SaleOrderVO SaleOrderVO= (nc.vo.so.so001.SaleOrderVO) ctx.getBillCardPanel().getBillData().getBillValueVO(SaleOrderVO.class.getName(), SaleorderHVO.class.getName(), SaleorderBVO.class.getName());
			SalePriceVO salePriceVO = GetPriceParam(saleorderBVO,saleorderHVO,SaleOrderVO);
			//必填项(存货,客户,计量单位,币种,单据日期,公司)
			IFindSalePriceQuery m_fundprm = (IFindSalePriceQuery) NCLocator.getInstance().lookup(IFindSalePriceQuery.class.getName());
			if (m_fundprm != null) {
				try {
					//询价
					PriceAskResultVO vo = (PriceAskResultVO) m_fundprm.findPrice(salePriceVO);
					// 设置原始的寻价单价、净价
					saleorderBVO.setNqtorgtaxprc(vo.getNum());
					saleorderBVO.setNqtorgtaxnetprc(vo.getNetNum());
					// 设置报价进行计算
					saleorderBVO.setNorgqttaxprc(vo.getNum());//这里可以替换自己的单价
					saleorderBVO.setNitemdiscountrate(vo.getDiscount());//这里可以替换自己的折扣
					//计算金额等其他信息
					Object oRet = SCMRelationsCal.calculate(saleorderBVO,saleorderHVO,SaleorderBVO.getCalculatePara("norgqttaxprc", null, UFBoolean.TRUE, "调整折扣"),
						      "norgqttaxprc", SaleorderBVO.getKeys(), SaleorderBVO.getField(),null);
					
					ctx.getBillCardPanel().getBillModel().setBodyRowVO((CircularlyAccessibleValueObject) oRet, e.getRow());
				} catch (BusinessException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		}

	}
	
	public SalePriceVO GetPriceParam(SaleorderBVO saleorderBVO,SaleorderHVO saleorderHVO,SaleOrderVO saleOrderVO) {		
		String sInv =saleorderBVO.getCinventoryid();
		if (sInv == null || sInv.toString().trim().length() == 0)
			return null;
		//设置查询参数0
		SalePriceVO salepriceVO = new SalePriceVO();
		//公司ID(当前公司)
		salepriceVO.setCropID(saleOrderVO.getPk_corp());
		//业务类型
		salepriceVO.setBizTypeID(saleOrderVO.getBusitypePK());
		//客户ID
		salepriceVO.setCustomerID(saleorderHVO.getCcustomerid());
		//客户基础ID
		salepriceVO.setCustomerBaseID(saleorderHVO.getCccustbasid());
		//客户分组
		String cchantypeid ="";
		if (!SoVoTools.isEmptyString(cchantypeid)
				&& !"null".equals(cchantypeid.trim())) {
			salepriceVO.setCustomerClass(cchantypeid);
		} else {
			salepriceVO.setCustomerClass(null);
		}
		salepriceVO.setBuseBaseStrict(Boolean.FALSE);
		//部门ID
		salepriceVO.setDeptid(saleorderHVO.getCdeptid());
		//销售组织
		salepriceVO.setSaleStrucid(saleorderHVO.getCsalecorpid());
		//系统日期
		Object date = saleorderHVO.getDbilldate();
		//存货ID
		salepriceVO.setInventoryID(saleorderBVO.getCinventoryid());
		//询价计量单位
		salepriceVO.setMeasdocid(saleorderBVO.getCquoteunitid());
		//存货基础ID
		salepriceVO.setInventoryBaseID(saleorderBVO.getCinvbasdocid());
		//币种ID
		salepriceVO.setCurrencyID(saleorderBVO.getCcurrencytypeid());
		//数量
		salepriceVO.setNumber(saleorderBVO.getNquoteunitnum());
		return salepriceVO;
	}
}


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值