已使用过的物料,中途取消“启用保质期管理”原创
金蝶云社区-Oo霞oO
Oo霞oO
5人赞赏了该文章 114次浏览 未经作者许可,禁止转载编辑于2024年09月09日 13:39:06
summary-icon摘要由AI智能服务提供

在标准系统中,物料启用保质期管理后不可修改。若需取消,需确保未启用序列号管理,并在清空库存后通过SQL语句强制更改。取消后补库存的序列号需与源不同。操作包括清库存、结账处理、SQL修改并补库存,需备份数据并验证。同时提供了SQL查询库存、物料信息、备份及取消保质期管理的语句示例。

标准系统中,一旦物料被使用,物料中【启用保质期管理】这一参数就会锁定,不允许再次修改。 对于使用一段时间后,需要取消保质期管理,可进行后台SQL语句强制更改。

注意:前提是改物料没有启用序列号管理。

若物料启用了批号、保质期、库存管理,中途取消保质期管理,清库存后,再次补库存,还是原来的序列号,则不能后台强制修改。入库时,录入源序列号后,会自动根据序列号主档的信息带出仓库、仓位、批号以及序列号追踪对应单据的生产日期和有效期至。

若依然强制修改取消保质期管理,则补库存时录入的序列号不能与源清库存时序列号一致。


再次强调,如非必要,建议清库存,重新建新的物料编码。不要改后台。一定要改,一定做好数据备份,测试环境测试验证后,无异常再到生产环境处理。


操作步骤(例当前期间在8期

1、当期相关物料全部清库存为0。做其他出库单全部出掉,保证当期期间期末无结存数量及金额;

2、存货进行结账处理,结账到9期。

3、后台SQL语句取消保质期管理, 并做其他出库单,库存方向 退货,进行补库存。


注意:修改后,不能反结账到8月,历史单据禁止再次操作。

另外,若有收料通知单、发货通知单、出库申请单、生产发料通知单等历史单据,存在未完成的,修改之后,删除单据后重新下推关联。

SQL语句:

--查库存 是否无库存

select FNUMBER,FBASEQTY from T_STK_INVENTORY a

INNER JOIN T_BD_MATERIAL b ON a.FMATERIALID =b.FMATERIALID

INNER JOIN T_BD_MATERIALSTOCK c ON b.FMATERIALID=c.FMATERIALID

where B.FNUMBER IN ('C00000026','C00000027','C00000034','C00000069','C00000089','F00000116',

'F00000219','F00000220','F00000229','R00000400','R00000502','R00000554') and FBASEQTY<>0

注意:若查询到有数据, 反结账到8月,做其他出库单,全部库存清空。


--物料.库存信息

select b.FMATERIALID, FISKFPERIOD 启用保质期控制 ,FEXPUNIT  保质期单位,FEXPPERIOD 保质期 , 

FISSNMANAGE 启用序列号管理 ,FSNCODERULE  序列号编码规则,FSNUNIT  序列号单位,

* from T_BD_MATERIAL a 

left join T_BD_MATERIALSTOCK b on a.FMATERIALID=b.FMATERIALID  --物料内码 

where a.FNUMBER in('C00000026','C00000027','C00000034','C00000069','C00000089','F00000116',

'F00000219','F00000220','F00000229','R00000400','R00000502','R00000554') and  a.FUSEORGID=1


select  FISKFPERIOD 启用保质期控制 ,FEXPUNIT  保质期单位,FEXPPERIOD 保质期 ,

FISSNMANAGE 启用序列号管理 ,FSNCODERULE  序列号编码规则,FSNUNIT  序列号单位,

*from  T_BD_MATERIALSTOCK where   --FISKFPERIOD=1


--备份表

select* into T_BD_MATERIALSTOCK202409041504 from T_BD_MATERIALSTOCK


--取消保质期管理 (多组织 分配型基础资料,创建组织和分配组织都需要修改,物料未使用时,前台只需要反审核修改创建组织,分配组织自动携带继承)

update T_BD_MATERIALSTOCK set FISKFPERIOD=0 ,FEXPUNIT='', FEXPPERIOD='0.0000000000'

 where FMATERIALID in(

select  FMATERIALID from T_BD_MATERIAL where FNUMBER in('C00000026','C00000027','C00000034','C00000069','C00000089','F00000116',

'F00000219','F00000220','F00000229','R00000400','R00000502','R00000554') )


赞 5