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;
	}
}


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章