湖北微信科技有限公司
销售热线:027-84233202 18907166990
更多>>
更多>>
更多>>
  当前位置:首页 > 技术服务 > 金蝶 > 正文

金蝶K/3:根据发货通知单上不同的仓库分别自动生成销售出库单的扩展开发

来源: 添加时间:1970-01-01 访问次数:
需求描述:一张发货通知单上可能有多个仓库,用户希望能够根据不同仓库分别自动下推销售出库单。

  需求分析:此需求有几个难点,1、要自动分仓库生成销售出库单,即发货通知单上有几个仓库,就要对应生成几张销售出库单,要理清楚发货通知单与销售出库单上各个字段的对应关系,哪些是可以直接传递,哪些是需要进行转换;2、涉及到库存、锁库的更新,由系统的“库存更新参数”控制;3、涉及到对上游单据发货通知单、销售订单的反写及关闭;4、涉及到上下游单据的关联,如果关联建立不起来,就没法上查下查;5、涉及到当前登录用户、计算机IP地址的获得,当前登录用户用来填入自动生成的销售出库单制单人字段和上机日志中操作者字段,计算机IP也是为了在上机日志中记录。

  因此,虽然看起来需求很简单,但真正实现起来,是非常复杂的。

  所以采用了模块化的方式,每个功能点独立出来,但又互相关联。我们把上述需求分为:

  1、生成出库单记录;2、更新库存,更新锁定库存;3、反写上游单据;4、写入上机日志。步骤1、3、4必定执行,步骤2则由库存更新参数控制。

金蝶K/3:根据发货通知单上不同的仓库分别自动生成销售出库单的扩展开发

  这些步骤的SQL脚本以资源文件的形式内嵌到插件里,使用时只需要用LoadResString函数载入即可。

  为了使脚本具有普适性,因此对于可变字段,采用{}括起来,实际运行时,由插件根据运算得到的结果进行替换。

  最终效果:

金蝶K/3:根据发货通知单上不同的仓库分别自动生成销售出库单的扩展开发

  逻辑:

  1、发货通知单必须已审核,否则不允许生成出库单,插件会予以提示;

  2、发货通知单只能生成一次出库单,不允许多次重复生成,重复操作时,插件会予以提示;

  3、生成出库单后,自动反写所有关联单据;根据库存更新参数,自动更新库存信息;

  4、通过“出库”功能自动生成销售出库单后,将不能通过系统自带的下推功能重复生成出库单,因此不用担心误操作问题;

  5、自动记录上机日志。

金蝶K/3:根据发货通知单上不同的仓库分别自动生成销售出库单的扩展开发

  由发货通知单自动生成的两张出库单。

金蝶K/3:根据发货通知单上不同的仓库分别自动生成销售出库单的扩展开发

  上机日志。

  附1、工业单据插件中获得当前登录的用户

Private Function GetCurrentUserID() As String
 '获取K3系统当前登录的用户内码
Dim c_usr As String
c_usr=GetCurrentUser()
Dim cn As Object
Dim rs As ADODB.Recordset
Dim tSQL As String
Set cn = CreateObject("K3Connection.AppConnection")
tSQL = "select FUserID from t_user where FName='" & c_usr & "'"
Set rs = cn.Execute(tSQL)
GetCurrentUserID = rs.Fields(0).Value
End Function

  附2、VB6代码获取本机名称和IP地址(部分代码)

  其中涉及到API调用,具体可以通过VB6的API浏览器查阅。

Public Function GetIPAddress() As String
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT
Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim i As Integer
Dim sIPAddr As String
If Not SocketsInitialize() Then
GetIPAddress = ""
Exit Function
End If
If gethostname(sHostName, 256) = SOCKET_ERROR Then
GetIPAddress = ""
' MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _
' " has occurred. Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
sHostName = Trim$(sHostName)
lpHost = gethostbyname(sHostName)

If lpHost = 0 Then
GetIPAddress = ""
MsgBox "Windows Sockets are not responding. " & _
"Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If

CopyMemory HOST, lpHost, Len(HOST)
CopyMemory dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen
For i = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(i) & "."
Next
GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
SocketsCleanup
End Function

  本插件适用于K/3 WISE和RISE全系列版本。
 


咨询电话:027-84233202
公        司:湖北微信科技有限公司


版权与免责声明:
1.凡本网注明来源为“本站原创”的所有作品,包括文字与图片,未经本网授权不得转载。违反上述声明者,本网将依法追究法律责任。
2.凡注明"来源:xxx(非本站)"的作品,均转载自其它媒体,本网转载的目的在于传播更多信息,此类稿件并不代表本网观点,本网不承担此类稿件侵权行为的直接责任及连带责任。
3.如因作品内容、版权等需要同本网联系的,请在作品在本网发表之日起30日内联,否则视为放弃相关权利
速达软件
鐢佃瘽锛027-84233202
   
金蝶软件
鐢佃瘽锛027-84233202
   
用友软件
鐢佃瘽锛027-84233202
   
公司地址:武汉市汉阳区汉阳大道140号闽东国际3栋公寓楼B2303  电话:027-84233202  业务QQ:4027428  技术QQ群:4793311
版权所有:湖北微信科技有限公司 visin.cn 中国财务软件网湖北武汉财务软件(金蝶速达用友)销售服务中心
广告合作点入    公司法律顾问:武汉今天律师事务所 双长武律师
CopyRight 2004-2018 VISIN.CN All Rights Reserved.
鄂ICP备18023963号-1    鄂公网安备:42010502000327