首页 > 其他分享 >u8:应付单据录入生成编号

u8:应付单据录入生成编号

时间:2023-07-25 21:11:56浏览次数:45  
标签:CONVERT varchar u8 when dDate 单据 112 录入 nvarchar

用友U8在后台用存储过程导入 应付单据录入。

创建 几个存储过程进行处理单据编号的生成。

第一步:取出单据编号

use UFDATA_012_2014
go
if OBJECT_ID('p_get_number','P') >0 
   DROP PROCEDURE [dbo].[P_Get_Number]
GO

declare 
@cardNum1 nvarchar(60) ,
@dDate1 datetime ,
@create_user_id1 nvarchar(40),
@number1 nvarchar(100),
@SQL NVARCHAR(2000),
@PARA NVARCHAR(500);
begin
  set @dDate1 = GETDATE();
  SET @SQL =N'[dbo].[P_Get_Number] ';
  --set @PARA = N'[dbo].[P_Get_Number]  @CardNum  Nvarchar(60), @ddate datetime, @create_user_id nvarchar(40), @number nvarchar(100) output';
  --exec SP_EXECUTESQL   @para, @CardNum1 =@CardNum, @ddate=@DDATE1 ,@create_user_id='demo',@number= @number1 output;
  EXEC [dbo].[P_Get_Number] 'P0',@dDate1,'dmeo',@number1 output;
  select @number1; 
end;
go

create PROCEDURE [dbo].[P_Get_Number]
@cardNum nvarchar(60) ,
@dDate datetime ,
@create_user_id nvarchar(40),
@number nvarchar(100)  output
as
begin
/*
* Author: samrv,
* Create Date: 2023-07-25
* 生成单据编号
*/
declare @user_id nvarchar(40)
declare @number1 nvarchar(100)
declare @cContent nvarchar(50);
set @user_id = (select cCode from VoucherContrapose a  left join   UserHrPersonContro b  on cPsn_Num = @create_user_id where a.cSeed = b.cUser_Id)

SELECT  @number1 =
    case 
    
    
    when  Prefix1Len=4 AND Prefix1Rule ='年'  then  CONVERT(varchar(4), @dDate, 112)
    
    when  Prefix1Len=4 AND Prefix1Rule ='年月' then  substring(CONVERT(varchar(6),@dDate,112),3,4)
    
    when   Prefix1Len=6 AND Prefix1Rule ='年月' then  CONVERT(varchar(6), @dDate, 112)
    
    when   Prefix1Len=6 AND Prefix1Rule ='年月日' then  substring(CONVERT(varchar(8), @dDate, 112),3,6)
    
    when   Prefix1Len=8 AND Prefix3Rule ='年月日' then  CONVERT(varchar(8), @dDate, 112)
        
    else '' 
    end,
    @cContent= Glide 
from  VoucherNumber where CardNumber = @cardNum;

declare @number2 nvarchar(100)

SELECT  @number2 =
    case 
    
    
    when  Prefix2Len=4 AND Prefix2Rule ='年' then  CONVERT(varchar(4), @dDate, 112)
    
    when Prefix2Len=4 AND Prefix2Rule ='年月' then  substring(CONVERT(varchar(6),@dDate,112),3,4)
    
    when  Prefix2Len=6 AND Prefix2Rule ='年月' then  CONVERT(varchar(6), @dDate, 112)
    
    when  Prefix2Len=6 AND Prefix2Rule ='年月日' then  substring(CONVERT(varchar(8), @dDate, 112),3,6)
    
    when  Prefix2Len=8 AND Prefix3Rule ='年月日' then  CONVERT(varchar(8), @dDate, 112)

    else '' 
    end,
    @cContent= Glide 
    
from  VoucherNumber where CardNumber = @cardNum

declare @number3 nvarchar(100)

SELECT  @number3 =
    case 
    
    
    when  Prefix3Len=4 AND Prefix3Rule ='年' then  CONVERT(varchar(4), @dDate, 112)
    
    when  Prefix3Len=4 AND Prefix3Rule ='年月' then  substring(CONVERT(varchar(6),@dDate,112),3,4)
    
    when  Prefix3Len=6 AND Prefix3Rule ='年月' then  CONVERT(varchar(6), @dDate, 112)
    
    when  Prefix3Len=6 AND Prefix3Rule ='年月日' then  substring(CONVERT(varchar(8), @dDate, 112),3,6)
    
    when  Prefix3Len=8 AND Prefix3Rule ='年月日' then  CONVERT(varchar(8), @dDate, 112)
    

    else '' 
    end ,
    @cContent= Glide 
     
from  VoucherNumber where CardNumber = @cardNum

	declare @num int
	declare @len int
	declare @glide nvarchar(100)
	declare @cSeed nvarchar(100)
	declare @maxn int 

	set @glide= (select GlideRule from VoucherNumber where CardNumber = @cardNum) 
	set @len = (Select GlideLen From VoucherNumber Where CardNumber=@cardNum ) 
	if(@glide is not null and @glide <>'')
	begin
		if(@glide = '年')
			set @cSeed = (CONVERT(varchar(4), @dDate, 112))
		if(@glide = '月')	
			set @cSeed = (CONVERT(varchar(6), @dDate, 112))
		if(@glide = '日' and @len <=6)
			set @cSeed = substring(CONVERT(varchar(8), @dDate, 112),3,6)  
		if(@glide = '日' and @len >6)
			set @cSeed = CONVERT(varchar(8), @dDate, 112) 
		select @maxn=max(cNumber) from VoucherHistory with (NOLOCK) Where  CardNumber=@cardNum and cContent=@cContent and cContentRule=@glide and cSeed=@cSeed
		if(@maxn is not null)
			set @num= 1+ @maxn
		else
		begin
			set @num=1
		end	
		exec P_InsetVoucheHistory @cardNum,@glide,@cSeed,@cContent
	end
	else
		set @num = 1+ (select cNumber as Maxnumber From VoucherHistory  with (NOLOCK) Where  CardNumber=@cardNum and cContent is NULL)

	SET @number = @number1+@number2+@number3+dbo.fn_FillNumberWithZero(@num,@len)

end

  

第二步:取出单据编号后,回写单据编号的最大值。

-- 生成录入日期 的单据编号 
create  PROCEDURE [dbo].[P_InsetVoucheHistory]    
@cardNum nvarchar(60),        
@glide nvarchar(100), 
@cSeed nvarchar(100),
@cContent nvarchar(100)         
AS  
/*
* Author: samrv,
* Create Date: 2023-07-25
* 生成单据编号
*/
if not exists (select * from VoucherHistory where CardNumber=@cardNum and cContent=@cContent and cContentRule=@glide)
begin   
   insert into VoucherHistory(CardNumber,cContent,cContentRule,cSeed,cNumber,bEmpty)
   values (@cardNum,@cContent,@glide,@cSeed,0,0)
end
else
BEGIN
	update VoucherHistory set cNumber=cNumber+1 where CardNumber=@cardNum and cContent=@cContent and cContentRule=@glide and cSeed=@cSeed
END

 第三步: 从自定义的接口表导入应付单据录入

这部分代码 ,有需要的观众留言获取。

标签:CONVERT,varchar,u8,when,dDate,单据,112,录入,nvarchar
From: https://www.cnblogs.com/samrv/p/17581042.html

相关文章

  • 提升效率,打通万里牛ERP与下游用友U8财务软件的无缝对接
    一、对接流程1.1销售/售后流程在万里牛订单出库后,通过轻易云数据集成平台将数据推送至用友U8销售订单和销售出库单,这些单据可以进行关联操作。当万里牛售后单完成退货入库后,通过数据集成平台将数据推送至用友U8销售退货单和红字销售出库单,这些单据同样可以进行关联操作。1.2......
  • 轻松应对复杂集成场景!用友U8API开发适配
    在企业上云的大趋势下,U8+全面转向互联网方向,深入融合云应用,一站式提供财务、营销、制造、采购、设计、协同、人力等领域的“端+云”服务,并通过软硬一体化、产业链协同的策略全面赋能成长型企业在技术、供应链、生产、财税、营销等领域的创新升级。为成长型企业提供基于互联网......
  • U8凭证打印,启用新控件及强制分页处理
    1.启用新控件需要在选项中设置:2.然后在总账--凭证打印 套打设置如下:然后在打印预览设置时选择强制分面即可 ......
  • ASEMI整流桥GBU808参数和应用
    编辑-Z整流桥GBU808是一种常见的电子元件,用于将交流电转换为直流电。它由四个二极管组成,可以全波整流。GBU808具有高电流和高电压的特点,适用于各种电源和电路应用。 GBU808的主要特点之一是其高电流能力。它可以承受高达8安培的电流,适用于大功率电子设备和电源系统。此外,GBU80......
  • ASEMI整流桥GBU808参数和应用
    编辑-Z整流桥GBU808是一种常见的电子元件,用于将交流电转换为直流电。它由四个二极管组成,可以全波整流。GBU808具有高电流和高电压的特点,适用于各种电源和电路应用。 GBU808的主要特点之一是其高电流能力。它可以承受高达8安培的电流,适用于大功率电子设备和电源系统。此外,GBU808还......
  • ASEMI整流桥KBU808参数,KBU808怎么判断好坏?
    编辑-ZKBU808是一种常用的整流桥,常用于电源和电机控制电路中。了解KBU808的参数和判断其好坏的方法对于电子工程师和电路设计师来说非常重要。 首先,让我们来了解一下KBU808的参数。KBU808是一种单相全波整流桥,具有以下主要参数: 1.最大正向电流(MaximumForwardCurrent):这是......
  • GBU808-ASEMI薄体整流桥GBU808
    编辑:llGBU808-ASEMI薄体整流桥GBU808型号:GBU808品牌:ASEMI芯片个数:4封装:GBU-4恢复时间:≥2000ns工作温度:-50°C~150°C浪涌电流:200A正向电流:8A反向耐压:800V正向压降:1.05V引脚数量:4漏电流:>10uaGBU808特性:ASEMI品牌GBU808是采用工艺芯片,该芯片具有良好的稳定性及抗冲击......
  • U8红蓝回冲单打印模版设置
    U8红蓝回冲单打印模版取自采购入库单模版加了红字或者蓝字回冲字样1.首先我们进入红蓝回冲单列表: 2.点开列表中对应回冲单在打印时右上角选择模版,该模版默认为采购入库单模版,为区别于采购入库单,我们可在单据设置,单据模版中找到采购入库单模版另存一份标识为红蓝回冲单打印 ......
  • 前端播放m3u8格式视频
    <!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>前端播放m3u8格式视频</title><linkhref="https://vjs.zencdn.net/7.4.1/video-js.css"rel="stylesheet......
  • 012双写一致性之定时更新,异步发送短信,异步秒杀逻辑前后端,课程页面前端,课程相关表分析,
    0双写一致性之定时更新#一旦加入缓存,就会出现数据不一致的请请求#双写一致性问题 -1改数据,删缓存-2改数据,改缓存-3定时更新#首页轮播图存在双写一致性问题这个问题 -以现在的技术水平(信号),做不到:改数据删缓存 -能选择的就是定时更新 -轮播......