Gw_Speedupload流程分析1、调用该存储过程需要传入的参数如下:@vchtypeint=12,--定单类型@head[varchar](600)=',,,,,,',--头信息//@addnew[varchar](1),--新增还是修改定单@vchcodeinint,@numberin[varchar](20),--如果是修改的定单,则传入发票号码,@ldatavarchar(8000),--行信息//@lflagvarchar(1),--第一次传为1@lendint2、调用存储过程输出参数如下:@vchcodeintoutput,--@number[varchar](20)output,--如果是新增的定单则返回发票号码@nextbilltypeintoutput3、调用该存储过程将返回一整型数,0表示成功,-1表示失败4、该存储过程详细处理流程如下:传入以上参数存储过程Gw_Speedupload处理开始去掉传入的行信息@len_ldata右边空格,@i=1,@j=1,@ret=0分解传入的头信息@head,获得头信息各字段的值:日期:@date单位:@btypeid仓库:@ktypeid雇员:@etypeid帐户类型编号:@atypeid单据类型:@s_billtype@lcmemo为第一次传送吗?@lflag='1'YN帐户类型编号@atypeid='0000000000'吗?NY置值:@number='Pendiente'是新增单据吗?@addnew='1'YN调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@vchcode调用存储过程成功吗?@vchcode=-1YN置返回值@ret=@vchcode并转向err1修改单据调用存储过程Z_deletedly删除表bakdly中对应记录,返回值赋给@ret调用存储过程Z_UpdateDlyNdx修改表DlyNdx中对应记录,返回值赋给@vchcode返回值@ret=-1吗?转向err1Y@atypeid'0000000000'@numberin='Invoice'吗?YN调用存储过程z_getvchnumber获得@number@number=@numberin@vchcode=-1吗?@ret=@vchcodeY是新增单据吗?@addnew='1'Y调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@vchcode调用存储过程成功吗?@vchcode=-1YN置返回值@ret=@vchcode并转向err1修改单据调用存储过程Z_deletedly删除表bakdly中对应记录,返回值赋给@ret调用存储过程Z_UpdateDlyNdx修改表DlyNdx中对应记录,返回值赋给@vchcode返回值@ret=-1吗?转向err1Y置商品编号:@ptypeid=''数量:@s_qty=''价格:@s_price=''折扣:@s_discount=''税率:@s_tax=''成本计算法@s_costmode=''@i=@len_ldata吗?行信息循环处理(substring(@ldata,@i,1)'#')AND(@j=1)?@ptypeid=@ptypeid+substring(@ldata,@i,1)累加得出商品编号YN@vchcode=-1吗?@ret=@vchcodeY(substring(@ldata,@i,1)'#')AND(@j=2)?@s_qty=@s_qty+substring(@ldata,@i,1)累加得出商品数量Y(substring(@ldata,@i,1)'#')AND(@j=3)?@s_price=@s_price+substring(@ldata,@i,1)累加得出商品价格YNN(substring(@ldata,@i,1)'#')AND(@j=4)?@s_discount=@s_discount+substring(@ldata,@i,1)累加得出折扣YN(substring(@ldata,@i,1)'#')AND(@j=5)?@s_tax=@s_tax+substring(@ldata,@i,1)累加得出税率YN(substring(@ldata,@i,1)'#')AND(@j=6)?@s_costmode=@s_costmode+substring(@ldata,@i,1)累加得出成本计算法YN(substring(@ldata,@i,1)='#')OR(@i=@len_ldata)?Y@j6?YN@j=@j+1@j=1,并把上面得出的数量、价格、折扣、税率、成本计算法转变为相应数据类型并用相应变量保存算出折扣价格@discountprice、总金额@total、税额@taxtotal、含税价@taxprice、含税总金额@tax_total、折扣总额@discounttotal@ptypeid='pay'?NY是新增单据且为第一次传送吗?(@addnew='1')and(@lflag='1')YN传入@vchcode等参数调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@ret传入@vchcodein等参数调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@ret返回值@ret=-1吗?返回err1Y返回值@ret=-1吗?返回err1Y@ptypeid'pay'是新增单据且为第一次传送吗?(@addnew='1')and(@lflag='1')YN传入@vchcode、'0000100001'等参数调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@ret传入@vchcodein、'0000100001'等参数调用存储过程Z_InsertDlyNdx往表DlyNdx中送对应记录,返回值赋给@ret返回值@ret=-1吗?返回err1Y返回值@ret=-1吗?返回err1Y置商品编号:@ptypeid=''数量:@s_qty=''价格:@s_price=''折扣:@s_discount=''税率:@s_tax=''成本计算法@s_costmode=''set@i=@i+1转行信息循环处理循环处理结束转入过帐处理在sysdata表中获得subname='RETAIL_SAVE_OPTION'对应记录的subvalue字段值并赋给变量@szTemp@szTemp='1'and@atypeid'0000000000'?是新增单据吗?@addnew='1'YYN@lend=1?YN传入@vchcode等参数调用存储过程gw_closeaccount进行相应处,返回值赋给@ret@ret0吗?返回@retY传入@vchcode参数调用存储过程Gw_autotax进行相应处,返回值赋给@nextbilltype@addnew'1'传入@vchcodein等参数调用存储过程gw_closeaccount进行相应处,返回值赋给@ret@ret0吗?返回@retY传入@vchcode参数调用存储过程Gw_autotax进行相应处,返回值赋给@nextbilltype返回@ret