用友股份-LE服务支持部产品方案--《NC502清除存货辅计量的解决方案》建立日期:2013-01-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-00662/7文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-01-01何俐V1.03/7目录NC502清除存货辅计量的解决方案........................................................................4一、问题背景...................................................................................................4二、解决方案...................................................................................................44/7NC502清除存货辅计量的解决方案一、问题背景某项目8月份上线,上线时有部分存货启用了辅计管理,采购销售库存各模块已经有业务数据,10月31号,由于使用和需求原因,客户提出需要取消这部分存货的辅计量管理,将所有有辅计量管理的存货全部出空,然后在数据库里取消了辅计量管理,而后在重新入库,问题:现在重新入库的存货在出库时不能出库!碰到这种状况,如何解决呢?我总结了采购/销售/库存/存货核算各模块的清除辅计量的脚本的解决方案,以供顾问参考.二、解决方案操作步骤:Step1,首先执行以下SQL脚本,清除采购请购单、采购订单、采购到货单的辅计量信息。---采购不记录换算率,只清除辅计量单位、辅数量即可,执行如下SQL语句:--1清除请购单的辅计量信息updatepo_praybill_bsetcassistunit=null,nassistnum=null;--2清除采购订单的辅计量信息updatepo_order_bsetcassistunit=null,nassistnum=null5/7;--3清除到货单的辅计量信息updatepo_arriveorder_bsetcassistunit=null,nassistnum=null;commit;Step2,执行以下SQL脚本,清除销售订单、销售发票中辅计量数据--1清除订单辅计量数据updateso_saleorder_bsetcpackunitid=null,npacknumber=nullwheredr=0andexists(selectpk_invbasdocfrombd_invbasdocwherepk_invbasdoc=cinvbasdocidand(assistunit='N'orassistunitisnull))and(cpackunitidisnotnullornpacknumberisnotnull);--2清除发票辅计量数据updateso_saleinvoice_bsetcpackunitid=null,npacknumber=nullwheredr=0andexists(selectpk_invbasdocfrombd_invbasdocwherepk_invbasdoc=cinvbasdocidand(assistunit='N'orassistunitisnull))and(cpackunitidisnotnullornpacknumberisnotnull);--3清除结算辅计量数据updateso_square_bsetcpackunitid=null,npacknumber=nullwheredr=0andexists(selectpk_invbasdocfrombd_invbasdocwherepk_invbasdoc=cinvbasdocidand(assistunit='N'orassistunitisnull))and(cpackunitidisnotnullornpacknumberisnotnull);6/7commit;Step3,执行以下SQL脚本,清除库存出入库单和库存调整单据中辅计量数据。--1用这个sql清除出入库单的辅计量信息updateic_general_bsetic_general_b.castunitid=null,ic_general_b.hsl=null,ic_general_b.noutassistnum=null,ic_general_b.nshouldoutassistnum=nullwhereic_general_b.dr=0andexists(selectpk_invbasdocfrombd_invbasdocwherebd_invbasdoc.pk_invbasdoc=ic_general_b.cinvbasidand(bd_invbasdoc.assistunit='N'orbd_invbasdoc.assistunitisnull))and(ic_general_b.castunitidisnotnulloric_general_b.hslisnotnulloric_general_b.noutassistnumisnotnulloric_general_b.nshouldoutassistnumisnotnull);--2用这个sql清除调整单的辅计量信息updateic_special_bsetic_special_b.castunitid=null,ic_special_b.hsl=null,ic_special_b.nadjustastnum=null,ic_special_b.naccountastnum=null,ic_special_b.ncheckastnum=null,ic_special_b.nshldtransastnum=null,ic_special_b.nperiodastnum=null7/7whereic_special_b.dr=0andexists(selectbd_invbasdoc.pk_invbasdocfrombd_invbasdoc,bd_invmandocwherebd_invbasdoc.pk_invbasdoc=bd_invmandoc.pk_invbasdocandic_special_b.cinventoryid=bd_invmandoc.pk_invmandocand(bd_invbasdoc.assistunit='N'orbd_invbasdoc.assistunitisnull))and(ic_special_b.castunitidisnotnulloric_special_b.hslisnotnull);--3调整现存量(用系统功能节点,必须做)--4调整月结(用系统功能节点,从系统启用日期开始,必须做)--5调整可用量(用系统功能节点,必须做)Step4,执行以下SQL脚本,清除存货核算单据中的辅计量数据。updateto_bill_bsetcastunitid=null,nchangerate=null,nassistnum=null,narrangeassnum=null,norderoutassnum=null,norderinassnum=null,nordersendassnum=null,nordersignassnum=null,ntranpoassnum=null,norderbackassnum=null,norderwaylossassnum=null;commit;