我的广告

回答

收藏

[协同开发] 生产退料单自定义数量字段怎么包含在未领料数量的计算逻辑中?

金蝶云星空 金蝶云星空 2658 人阅读 | 0 人回复 | 2023-06-13

【应用场景】
客户自己需要加了一个退料类型的字段,这个字段要包含在未领料数量的计算逻辑上
& d( A. }2 W0 g0 V, E

【实现步骤】
9 h2 O4 k; {  A% e7 A  K# u
<1>未领数量=应发-已领+良品退料+来料不良数量-多领退回数量,客户需要在用料清单上加一个字段,用于生产退料单第四种退料类型反写回来。 二开一个反写插件,挂在生产退料单的反写插件上面,如下图:
) U! f* J+ O# x% P
0 X8 j4 H  y# m+ U$ I/ ~
<2>二开代码实例如下:
) ^# X8 v# O9 \0 X% p  p
using Kingdee.BOS.Core.BusinessFlow.PlugIn.Args;* R1 X. S4 q# D% k" x+ D
using Kingdee.K3.Core.MFG;
/ B! W: S- a; o5 V8 }  C- J# v9 Cusing Kingdee.K3.MFG.App.ServicePlugIn;
3 T( C* p; ]  ]  U0 }2 m% o) _using Kingdee.K3.Core.MFG.EntityHelper;* O( K/ R$ l3 N/ {
using Kingdee.BOS.Util;- ?$ v5 x* `5 D4 X
using System;4 F$ s. `/ h$ Z. N8 f5 }3 O6 U
using System.Collections.Generic;
+ q. W+ ]/ m$ a" susing System.Linq;
" a! K: j2 Y7 V1 I/ z: Rusing System.Text;0 J1 I/ T( h# v$ X# ?2 t+ }$ H

* R: p% w9 z  M  U9 n" Lnamespace EK.Kingdee.K3.MFG.PRD.App.ServicePlugIn
5 q; r9 [" h7 W" `. V  k& V; |{
& c& G8 L, x$ k$ C% t. v    public class ReturnMtrlBussinessFlow : AbstractMfgBusinessFlowServicePlugIn
8 }3 B0 d- v+ v/ `2 R    {
- h8 y; Q: ~7 A        /// <summary>3 g3 _1 Z7 l% L2 q: @' s
        /// 获取是否跟新wip和已消耗数参数
/ _" }" n# ^" U. q$ R9 M  w        /// </summary>
: t6 }2 Z# x* k; o; y5 F        /// <param name="e"></param>
' `! Z) b+ I! ?) W3 w1 R) v3 x        public override void BeforeTrackBusinessFlow(BeforeTrackBusinessFlowEventArgs e), g3 K! G5 V* @+ y; ?3 N
        {- Q, H$ h- K6 y3 T
            base.BeforeTrackBusinessFlow(e);# O% q# A" U. d- w2 ^
            base.GetIsUpdateWipConsume();
9 i- q5 v; x' f: K& d- u. S& B        }
6 e# M0 J* M/ m8 I( R" y( K% ~1 o/ ?4 B$ O& q
        /// <summary>
5 K5 r% O9 a' v' `% {        /// 待反写用料清单分录内码
7 [& Y2 l, s' g- D: X        /// </summary>$ u, J: a9 Y' ?( v$ r2 a. E- B1 v
        private List<long> UpdatePpbomEntryIds { get; set; }, M& c& I' v! P& i
: ~- q) C( F, X0 d, e
        /// <summary># g5 p# t  T1 D- B$ }) x
        /// 重载此事件用于收集PPBOM分录ID
, v+ e; [3 D. [        /// </summary>
2 p) M! O) @3 c, X/ x1 D. ?        /// <param name="e"></param>
, _% l! H1 U) [) k' W        public override void AfterCommitAmount(AfterCommitAmountEventArgs e)
0 @, f1 _. j5 C, `+ D6 r        {
1 B* R' P/ v- r% ]+ J+ u4 _            base.AfterCommitAmount(e);
/ T* S8 `0 A: _7 e- q0 a            if (!base.IsUpdateWipConsume) return;0 W, y7 k5 S+ l0 Y
( R. m. d5 g3 j. D
            if (UpdatePpbomEntryIds == null) UpdatePpbomEntryIds = new List<long>();
; C& G2 c8 Q" n% l5 {            if (string.CompareOrdinal(e.Rule.SourceFormId, MFGFormIdConst.SubSys_PRD.PPBOMBill) == 0)
0 |2 r8 L- p( L: j0 b; P0 }$ I8 s            {! v( D$ I* Q- X1 d, I' @
                UpdatePpbomEntryIds.Add(e.SourceActiveRow.GetDynamicObjectItemValue<long>("Id"));( h$ S- N6 R) s, P6 Y6 r& ], r
            }  y. f" `2 F- E2 y7 q& f) L9 E
        }, [7 Y. K; E. z. t

- T* Q+ w: A# R6 \: B) \        /// <summary>5 B; y) L5 y. u  M4 ~+ }; U
        /// 所有单据反写完成,统一反写用料清单的未领数量7 q* Y; ^/ y2 e* l1 y: q
        /// </summary>7 {8 u$ G. S" M& v3 U
        /// <param name="e"></param>* U1 v2 Q; z9 w) D. a+ }  {2 r
        public override void FinishWriteBack(FinishWriteBackEventArgs e)2 o- B7 j# f7 ?
        {
+ J# K" E# h; J# L% U            base.FinishWriteBack(e);* ~0 w( l1 I6 i# x, V* f
            if (!UpdatePpbomEntryIds.IsEmpty())7 i- S' W2 ^6 E9 f5 A
            {: B8 A- f/ z  {& R; w
                //这里通过SQL语句更新未领数量
- F" }! C) b  I/ I( [# `0 P            }
- r  d) u. r5 p0 h: }% D        }6 @: I9 ?! v% U+ v
    }" X) Z0 C7 z* _2 R3 N: f
}: o8 |% h: O7 c) C( r& u6 E

1 Q+ D0 Y3 q8 }
" N, t# P- W: W+ j5 b1 y. [
: f1 b" L  |' r0 s; K' a& i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
作者:amen 来源:百知社区 著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则