NC 完工报检单 推单 产成品入库单 批次问题

NC正常推单流程:
生产报告->完工报检单->质检报告
生产报告->产成品入库
NC内置单据转换规则。

实际业务流程:(客户没上生产,所以通过)
完工报检单->质检报告->产成品入库
无转换规则 手动拼VO生单

// 完工报检单 推 产成品入库单
    private void C001_TO_46(List<ApplyHeaderVO> list) {

        ArrayList<FinProdInVO> arrayList = new ArrayList<FinProdInVO>();

        // 产成品入VO
        FinProdInVO finProdInVO = new FinProdInVO();

        // 入库表头
        FinProdInHeadVO head = new FinProdInHeadVO();
        //当前时间
        UFDateTime ufDateTime = new UFDateTime();

        ApplyHeaderVO  applyVO_Head=list.get(0);
        //表头封装VO
        head.setApprover("~");// 审批人
        head.setBillmaker(applyVO_Head.getBillmaker());// 制单人
        head.setCbizid("~");// 业务员
        head.setCdptid(applyVO_Head.getPk_applydept());// 部门
        head.setCdptvid(applyVO_Head.getPk_applydept_v());// 部门

        FinanceOrgVO getCorpoid = NC.GetCorpoid(applyVO_Head.getPk_org());
        head.setCorpoid(getCorpoid.getPk_financeorg());// 公司
        head.setCorpvid(getCorpoid.getPk_vid());// 公司版本
        head.setCprocalbodyoid(applyVO_Head.getPk_org()); // 生产库存组织最新版本
        head.setCprocalbodyvid(applyVO_Head.getPk_org_v()); // 生产库存组织
        head.setCprowarehouseid(applyVO_Head.getPk_stordoc()); // 生产仓库
        head.setCreationtime(ufDateTime); // 创建时间
        head.setCreator(applyVO_Head.getCreator()); // 创建人

        //查询输入库类型
        BilltypeVO selBillTypeBycode = NC.SelBillTypeBycode("46-01", applyVO_Head.getPk_group());

        head.setCtrantypeid(selBillTypeBycode.getPk_billtypeid()); // 出入库类型 CTRANTYPEID 
        head.setCwarehouseid(applyVO_Head.getPk_stordoc()); // 仓库
        head.setCwhsmanagerid("~"); // 库管员
        head.setDbilldate(AppContext.getInstance().getBusiDate()); // 单据日期
        head.setDmakedate(AppContext.getInstance().getBusiDate()); // 制单日期
        head.setFbillflag(2);// 单据状态// 1=删除,2=自由,3=签字,4=审核,5=审核中,6=审核不通过,7=已调差状态,
        head.setIprintcount(0);// 打印次数
        //head.setNtotalnum(applyVO_Head.getNnum());// 总数量
        head.setNtotalpiece(ValueUtils.getUFDouble(0));
        head.setNtotalvolume(ValueUtils.getUFDouble(0));
        head.setNtotalweight(ValueUtils.getUFDouble(0));
        head.setPk_group(applyVO_Head.getPk_group());//
        head.setPk_measware("~");
        head.setPk_org(applyVO_Head.getPk_org());// 库存组织
        head.setPk_org_v(applyVO_Head.getPk_org_v());// 库存组织
        head.setTs(new UFDateTime());// 时间戳
        head.setVtrantypecode("46-01");

        //表体行数组 
        FinProdInBodyVO[] bodyVOs = new FinProdInBodyVO[list.size()];
        UFDouble Nnum=ValueUtils.getUFDouble(0);
        //质检报告
        ReportItemVO itemVO=null;
        for (int i=0;i<list.size();i++) {
            ApplyHeaderVO applyVO=list.get(i);
            // 入库表体
            FinProdInBodyVO bvo = new FinProdInBodyVO();

            //根据报检单 查询 质检报告 是否存在 改判物料
            itemVO=(ReportItemVO)NC.Get_reportbillb_By_applybill(ReportItemVO.class, applyVO.getPk_applybill());
            //将原完工报检单 产品信息 赋值为 改判后的物料信息
            if(null!=itemVO && itemVO.getBchanged().booleanValue() && itemVO.getBeligible().booleanValue()==false){
                applyVO.setPk_material(itemVO.getPk_chgmrl());//改判后的物料
                applyVO.setCastunitid(itemVO.getCastunitid());//单位
                applyVO.setVchangerate(itemVO.getVchangerate());//转换率
            }

            //计算表头总数量
            Nnum.add(applyVO.getNnum());

            bvo.setBbarcodeclose(UFBoolean.valueOf(false));// 单据行是否条码关闭
            bvo.setBonroadflag(UFBoolean.valueOf(false));// 批次是否封存
            bvo.setBreworkflag(UFBoolean.valueOf(false));// 是否在途
            bvo.setCasscustid("~");// 返修
            bvo.setCastunitid(applyVO.getCastunitid());// 单位
            bvo.setCbodytranstypecode("46-01");// 出入库类型
            bvo.setCbodywarehouseid(applyVO.getPk_stordoc());// 仓库
            // bvo.setCcorrespondbid("~");//对应入库单表体主键
            // bvo.setCcorrespondhid("~");
            // bvo.setCcorrespondtranstype("~");
            // bvo.setCcorrespondtype("~");
            bvo.setCffileid("~");
            // bvo.setCfirstbillbid("~");
            // bvo.setCfirstbillhid("~");
            // bvo.setCfirsttranstype("~");
            // bvo.setCfirsttype("~");
            bvo.setChandvoertranstype("~");//
            bvo.setCioliabilityoid("~");//
            bvo.setCioliabilityvid("~");//
            // bvo.setClocationid("~");//货位
            bvo.setCmaterialoid(applyVO.getPk_material());// 物料
            bvo.setCmaterialvid(applyVO.getPk_material());// 物料


            bvo.setCsourcebillbid(applyVO.getPk_applybill());// 来源单据表体主键
            bvo.setCsourcebillhid(applyVO.getPk_applybill());// 来源单据主键
            bvo.setCsrcmaterialoid(applyVO.getPk_material());// 来源单据物料
            bvo.setCsourcematerialoid(applyVO.getPk_material());// 来源物料
            bvo.setCsourcetranstype(applyVO.getCtrantypeid());// 来源交易类型
            bvo.setCsourcetype(applyVO.getCtrantypeid());// 来源单据类型
            bvo.setCsrcmaterialoid(applyVO.getPk_material());
            bvo.setCsrcmaterialvid(applyVO.getPk_material());
            bvo.setCmffileid("~");//
            bvo.setCorpoid(head.getCorpoid());// 公司
            bvo.setCorpvid(head.getCdptvid());// 公司
            bvo.setCprodasscustid("~");//
            bvo.setCprodproductorid("~");//
            bvo.setCprodprojectid("~");//
            bvo.setCproductid(applyVO.getPk_material());// 主产品

            bvo.setCproductorid("~");//
            bvo.setCprodvendorid("~");//
            bvo.setCprojectid(applyVO.getCprojectid());// 项目号
            bvo.setCrowno(((i+1)*10)+"");// -----------行号
            bvo.setCunitid(applyVO.getCunitid());// 主单位
            bvo.setDbizdate(head.getDmakedate());// 入库日期
            bvo.setFlargess(UFBoolean.valueOf(false));// 赠品
            bvo.setFproductclass(1);// 产品类型
            bvo.setNshouldassistnum(applyVO.getNnum());//应收应收数量
            bvo.setNshouldnum(applyVO.getNnum());//应收应收数量
            bvo.setNassistnum(applyVO.getNnum());// 实收主数量
            bvo.setNnum(applyVO.getNnum());// 实收数量
            bvo.setNvolume(ValueUtils.getUFDouble(0));//
            bvo.setNweight(ValueUtils.getUFDouble(0));//

            // 根据批次号 查询批次档案->批次主键
            //BatchcodeVO getPkByCode = NC.GetPkByCode(applyVO.getVbatchcode());

            //bvo.setStatus(2);
            //bvo.setPk_batchcode(applyVO.getVbatchcode());// 批次主键
            bvo.setVbatchcode(applyVO.getVbatchcode());// 批次主键
            bvo.setPk_group(head.getPk_group());//
            bvo.setPk_measware("~");//
            bvo.setPk_org(head.getPk_org());//
            bvo.setPk_org_v(head.getPk_org_v());//
            bvo.setVbatchcode(applyVO.getVbatchcode());// 物料批次号
            bvo.setVchangerate(applyVO.getVchangerate());//转换率
            bvo.setVfree1(applyVO.getVfree1());
            bvo.setVfree2(applyVO.getVfree2());
            bvo.setVfree3(applyVO.getVfree3());
            bvo.setVfree4(applyVO.getVfree4());

            bvo.setVsourcebillcode(applyVO.getVbillcode());// 来源单据号

            //填充表体行数组
            bodyVOs[i] = bvo;
        }

        head.setNtotalnum(Nnum);// 表头总数量
        //入库单VO填充表头
        finProdInVO.setParent(head);
        //入库单VO填充表体行
        finProdInVO.setChildren(FinProdInBodyVO.class, bodyVOs);

        //入库单VO放入待转数组
        arrayList.add(finProdInVO);



        //ArrayList转为数组
        FinProdInVO[] finProdInVOs = arrayList
                .toArray(new FinProdInVO[arrayList.size()]);

        IPFBusiAction baction = (IPFBusiAction) NCLocator.getInstance().lookup(
                IPFBusiAction.class);

        FinProdInVO[] myrtn = (FinProdInVO[]) baction.processBatch(
                    "PUSHSAVE", "46", finProdInVOs, null, null, null);

问题:产品批号
在拼装产成品入库单VO时,通过批次查询批次主键赋值 这里是错误的。
因为批次的建立 是在产成品入库时 才会对应的生成批次档案。
所有这里VO的赋值只赋值 Vbatchcode 非 Pk_batchcode。这里NC的生单逻辑会根据传入的批次CODE自动创建批次档案 并填充批次Pk_batchcode。

类路径: nc.bs.ic.general.rule.before.BatchAttributeCheck

public void process(E[] vos)
/*     */   {
/*     */     try
/*     */     {
/*  66 */       List<BatchcodeVO> batches = new ArrayList();
/*  67 */       Map<String, String> newBatchMap = new HashMap();
/*  68 */       checkAttribute(vos);
/*  69 */       for (E vo : vos) {
/*  70 */         handleOutBatch(vo);
/*     */       }
/*  72 */       newBatchMap = processNewBatch(vos);
/*  73 */       batches = getBatch(vos);
/*     */       
/*  75 */       new ICBSContext().setICBatchBefore(batches);
/*  76 */       new ICBSContext().setNewBatchMap(newBatchMap);
/*     */     }
/*     */     catch (BusinessException ex) {
/*  79 */       ExceptionUtils.wrappException(ex);
/*     */     }
/*     */   }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值