$PBExportHeader$f_billevent_excute.srf global type f_billevent_excute from function_object end type forward prototypes global function string f_billevent_excute (string arg_command, long arg_billtype, long arg_eventtype, long arg_scid, long arg_taskid, string arg_taskcode, long arg_sptid) global function string f_billevent_excute (string arg_command, long arg_billtype, long arg_eventtype, string arg_taskcode) end prototypes global function string f_billevent_excute (string arg_command, long arg_billtype, long arg_eventtype, long arg_scid, long arg_taskid, string arg_taskcode, long arg_sptid);DataStore ds_cmp String ls_rslt = '' String ls_rs Long ll_row String arg_sptname String arg_sptrep String arg_phone DateTime arg_taskdate String ls_mtrlcode String ls_mtrlname String ls_mtrlmode Decimal ls_qty String ls_unit String ls_woodcode String ls_pcode String ls_status String arg_mx = '' ds_cmp = Create DataStore ds_cmp.DataObject = "ds_buytask_event" //ds_cmp.SetTransObject(sqlca) //ds_cmp.Retrieve() ll_row = ds_cmp.InsertRow(0) ds_cmp.Object.arg_scid[ll_row] = arg_scid ds_cmp.Object.arg_taskid[ll_row] = arg_taskid ds_cmp.Object.arg_taskcode[ll_row] = arg_taskcode ds_cmp.Object.arg_sptid[ll_row] = arg_sptid IF arg_billtype = 401 THEN // 采购订单 SELECT u_buyTask.requiredate, u_spt.name, u_spt.rep, u_spt.tele INTO :arg_taskdate, :arg_sptname, :arg_sptrep, :arg_phone FROM u_buyTask INNER JOIN u_spt ON u_buyTask.sptID = u_spt.sptid Where (u_buyTask.scid = :arg_scid) And (u_buyTask.TaskID = :arg_taskid); IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询采购订单信息失败,' + sqlca.SQLErrText GOTO ext END IF ds_cmp.Object.arg_sptname[ll_row] = arg_sptname ds_cmp.Object.arg_sptrep[ll_row] = arg_sptrep ds_cmp.Object.arg_phone[ll_row] = arg_phone ds_cmp.Object.arg_taskdate[ll_row] = arg_taskdate DECLARE cur1 CURSOR FOR SELECT u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_mtrldef.mtrlmode, u_buyTaskMx.Qty, u_mtrldef.unit, u_buyTaskMx.woodcode, u_buyTaskMx.pcode, u_buyTaskMx.status FROM u_buyTaskMx INNER JOIN u_mtrldef ON u_buyTaskMx.MtrlID = u_mtrldef.mtrlid Where (u_buyTaskMx.scid = :arg_scid) And (u_buyTaskMx.TaskID = :arg_taskid); OPEN cur1; FETCH cur1 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; DO WHILE sqlca.SQLCode = 0 arg_mx += ls_mtrlcode + ',' + ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##') + ls_unit + '|' + ls_woodcode + '|' + ls_pcode + '|' + ls_status + ';' FETCH cur1 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; LOOP CLOSE cur1; ds_cmp.Object.arg_mx[ll_row] = arg_mx END IF ls_rs = ds_cmp.Modify("cmp.Expression='"+ arg_command + "'") IF ls_rs <> '' THEN ls_rslt = '表达式错误,' + ls_rs GOTO ext END IF ds_cmp.AcceptText() ls_rslt = String(ds_cmp.Object.cmp[ll_row]) ext: Destroy ds_cmp RETURN ls_rslt end function global function string f_billevent_excute (string arg_command, long arg_billtype, long arg_eventtype, string arg_taskcode);DataStore ds_cmp String ls_rslt = '' String ls_rs Long ll_row String arg_sptname String arg_sptrep String arg_phone DateTime arg_taskdate Decimal arg_billamt String arg_freight, arg_rel_rep String ls_mtrlcode String ls_mtrlname String ls_mtrlmode Decimal ls_qty String ls_unit String ls_woodcode String ls_pcode String ls_status, ls_mxdscrp Decimal ld_cusamt Long arg_sptid,arg_scid,arg_taskid String outwaresale_业务员 String outwaresale_业务员备注 String outwaresale_产品名称_规格_配置_配置1_备注 string custamt_相关号 string custamt_客户名称 string custamt_客户联系人 string custamt_摘要 string sptamt_相关号 string sptamt_供应商名称 string sptamt_摘要 string saletask_相关号 string saletask_单据编号 string saletask_货运部 string saletask_货运单号 string saletask_包装总件数 string outwaresale_相关号 string outwaresale_单据编号 string outwaresale_货运部 string outwaresale_货运单号 string outwaresale_包装总件数 string custamt_客户编号 string custamt_到账日期 string custamt_账号名称 string sptamt_供应商编号 string sptamt_付账日期 string sptamt_账号名称 String arg_mx = '' ds_cmp = Create DataStore ds_cmp.DataObject = "ds_buytask_event" //ds_cmp.SetTransObject(sqlca) //ds_cmp.Retrieve() IF arg_billtype = 401 THEN // 采购订单 SELECT u_buyTask.requiredate, u_spt.name, u_spt.rep, u_spt.tele, u_buyTask.sptID, u_buyTask.scid, u_buyTask.taskid INTO :arg_taskdate, :arg_sptname, :arg_sptrep, :arg_phone, :arg_sptid, :arg_scid, :arg_taskid FROM u_buyTask INNER JOIN u_spt ON u_buyTask.sptID = u_spt.sptid Where (u_buyTask.taskcode = :arg_taskcode); IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询采购订单信息失败,' + sqlca.SQLErrText GOTO ext END IF DECLARE cur1 CURSOR FOR SELECT u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_mtrldef.mtrlmode, u_buyTaskMx.Qty, u_mtrldef.unit, u_buyTaskMx.woodcode, u_buyTaskMx.pcode, u_buyTaskMx.status FROM u_buyTaskMx INNER JOIN u_mtrldef ON u_buyTaskMx.MtrlID = u_mtrldef.mtrlid Where (u_buyTaskMx.scid = :arg_scid) And (u_buyTaskMx.taskid = :arg_taskid); OPEN cur1; FETCH cur1 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; DO WHILE sqlca.SQLCode = 0 arg_mx += ls_mtrlcode + ',' + ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + '|' + ls_woodcode + '|' + ls_pcode + '|' + ls_status + ';' FETCH cur1 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; LOOP CLOSE cur1; ELSEIF arg_billtype = 102 THEN SELECT u_SaleTask.scid, u_SaleTask.TaskID, u_SaleTask.CusID, u_cust.name, u_cust.custype, u_cust.tele_sms, u_SaleTask.requiredate, u_saletask.msttakeamt, u_saletask.freight, u_saletask.rel_rep, u_saletask.taskcode, u_saletask.relcode, u_saletask.freight, u_saletask.transcode INTO :arg_scid, :arg_taskid, :arg_sptid, :arg_sptname, :arg_sptrep, :arg_phone, :arg_taskdate, :arg_billamt, :arg_freight, :arg_rel_rep, :saletask_单据编号, :saletask_相关号, :saletask_货运部, :saletask_货运单号 FROM u_SaleTask INNER JOIN u_cust ON u_SaleTask.CusID = u_cust.cusid Where u_SaleTask.taskcode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询销售订单信息失败,' + sqlca.SQLErrText GOTO ext END IF DECLARE cur2 CURSOR FOR SELECT u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_mtrldef.mtrlmode, u_saleTaskMx.saleQty, u_mtrldef.unit, u_saleTaskMx.woodcode, u_saleTaskMx.pcode, u_saleTaskMx.status, u_saleTaskMx.mxdscrp FROM u_saleTaskMx INNER JOIN u_mtrldef ON u_saleTaskMx.MtrlID = u_mtrldef.mtrlid Where (u_saleTaskMx.scid = :arg_scid) And (u_saleTaskMx.taskid = :arg_taskid); OPEN cur2; FETCH cur2 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status, :ls_mxdscrp; DO WHILE sqlca.SQLCode = 0 //arg_mx += ls_mtrlcode + ',' + ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + '|' + ls_woodcode + '|' + ls_pcode + '|' + ls_status + ';' arg_mx += ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit IF Len(ls_status) > 0 THEN arg_mx += ',' + ls_status IF Len(ls_woodcode) > 0 THEN arg_mx += ',' + ls_woodcode IF Len(ls_pcode) > 0 THEN arg_mx += ',' + ls_pcode IF Len(ls_mxdscrp) > 0 THEN arg_mx += ',' + ls_mxdscrp arg_mx += ';' FETCH cur2 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status, :ls_mxdscrp; LOOP CLOSE cur2; select cast(sum(u_saletaskmx.packqty) as varchar(10) ) into :saletask_包装总件数 from u_saletask inner join u_saletaskmx on u_saletaskmx.scid=u_saletask.scid and u_saletaskmx.taskid=u_saletask.taskid Where (u_saleTaskMx.scid = :arg_scid) And (u_saleTaskMx.taskid = :arg_taskid); ELSEIF arg_billtype = 403 THEN SELECT u_inware.scid, u_inware.inwareid, u_inware.sptid, u_spt.name, u_spt.rep, u_spt.tele, u_inware.indate INTO :arg_scid, :arg_taskid, :arg_sptid, :arg_sptname, :arg_sptrep, :arg_phone, :arg_taskdate FROM u_inware INNER JOIN u_spt ON u_inware.sptid = u_spt.sptid Where u_inware.inwarecode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询采购收货单信息失败,' + sqlca.SQLErrText GOTO ext END IF DECLARE cur3 CURSOR FOR SELECT u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_mtrldef.mtrlmode, u_inwaremx.uqty, u_inwaremx.unit, u_inwaremx.woodcode, u_inwaremx.pcode, u_inwaremx.status FROM u_inwaremx INNER JOIN u_mtrldef ON u_inwaremx.MtrlID = u_mtrldef.mtrlid Where (u_inwaremx.scid = :arg_scid) And (u_inwaremx.inwareid = :arg_taskid); OPEN cur3; FETCH cur3 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; DO WHILE sqlca.SQLCode = 0 arg_mx += ls_mtrlcode + ',' + ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + '|' + ls_woodcode + '|' + ls_pcode + '|' + ls_status + ';' FETCH cur3 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status; LOOP CLOSE cur3; ELSEIF arg_billtype = 540 THEN SELECT u_cusamt.scid, u_cusamt.cusmonid, u_cusamt.cusid, u_spt.name, u_spt.rep, u_spt.tele, u_cusamt.cusdate, u_cusamt.relcode, u_spt.name, u_cusamt.dscrp, u_spt.name, CONVERT(varchar(6) , u_cusamt.viewdate, 112 ), u_accounts.accountsname INTO :arg_scid, :arg_taskid, :arg_sptid, :arg_sptname, :arg_sptrep, :arg_phone, :arg_taskdate, :sptamt_相关号, :sptamt_供应商名称, :sptamt_摘要, :sptamt_供应商编号, :sptamt_付账日期, :sptamt_账号名称 FROM u_cusamt INNER JOIN u_spt ON u_cusamt.cusid = u_spt.sptid left join u_accounts ON u_cusamt.accountid = u_accounts.accountsid Where u_cusamt.cusmoncode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询供应商付款单信息失败,' + sqlca.SQLErrText GOTO ext END IF SELECT u_cusamt.cusamt INTO :ld_cusamt FROM u_cusamt Where u_cusamt.cusmoncode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询供应商付款单金额信息失败,' + sqlca.SQLErrText GOTO ext END IF arg_mx = '金额:' + String(ld_cusamt, '#,##0.##') ELSEIF arg_billtype = 104 THEN SELECT u_outware.scid, u_outware.outwareid, u_outware.cusid, u_cust.name, u_cust.custype, u_cust.tele_sms, u_outware.outdate, isnull(uv_rp_outware_sale.amt - uv_rp_outware_sale.otheramt_en, 0) as amt, u_outware.relstr_1, u_outware.rel_rep, u_outware.outrep, u_outware.part, u_outware.outwarecode, u_outware.relstr_1, u_outware.transcode INTO :arg_scid, :arg_taskid, :arg_sptid, :arg_sptname, :arg_sptrep, :arg_phone, :arg_taskdate, :arg_billamt, :arg_freight, :arg_rel_rep, :outwaresale_业务员, :outwaresale_相关号, :outwaresale_单据编号, :outwaresale_货运部, :outwaresale_货运单号 FROM u_outware INNER JOIN u_cust ON u_outware.cusid = u_cust.cusid left OUTER join uv_rp_outware_sale on u_outware.scid = uv_rp_outware_sale.scid AND u_outware.outwareid = uv_rp_outware_sale.outwareid Where u_outware.outwarecode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询销售发货单信息失败,' + sqlca.SQLErrText GOTO ext END IF SELECT top 1 outrepdscrp INTO :outwaresale_业务员备注 FROM u_outrepdef Where outrepname = :outwaresale_业务员; IF IsNull(outwaresale_业务员备注) THEN outwaresale_业务员备注 = '' DECLARE cur4 CURSOR FOR SELECT u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_mtrldef.mtrlmode, u_outwaremx.qty, u_mtrldef.unit, u_outwaremx.woodcode, u_outwaremx.pcode, u_outwaremx.status, u_outwaremx.mxdscrp FROM u_outwaremx INNER JOIN u_mtrldef ON u_outwaremx.MtrlID = u_mtrldef.mtrlid Where (u_outwaremx.scid = :arg_scid) And (u_outwaremx.outwareid = :arg_taskid); OPEN cur4; FETCH cur4 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status, :ls_mxdscrp; DO WHILE sqlca.SQLCode = 0 //arg_mx += ls_mtrlcode + ',' + ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + '|' + ls_woodcode + '|' + ls_pcode + '|' + ls_status + ';' arg_mx += ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + ';' IF Len(ls_status) > 0 THEN arg_mx += ',' + ls_status IF Len(ls_woodcode) > 0 THEN arg_mx += ',' + ls_woodcode IF Len(ls_pcode) > 0 THEN arg_mx += ',' + ls_pcode IF Len(ls_mxdscrp) > 0 THEN arg_mx += ',' + ls_mxdscrp arg_mx += ';' //outwaresale_产品名称_规格_配置_配置1_备注 outwaresale_产品名称_规格_配置_配置1_备注 += ls_mtrlname + ',' + ls_mtrlmode + ',' + String(ls_qty, '#,##0.##########') + ls_unit + ';' IF Len(ls_status) > 0 THEN outwaresale_产品名称_规格_配置_配置1_备注 += ',' + ls_status IF Len(ls_woodcode) > 0 THEN outwaresale_产品名称_规格_配置_配置1_备注 += ',' + ls_woodcode IF Len(ls_mxdscrp) > 0 THEN outwaresale_产品名称_规格_配置_配置1_备注 += ',' + ls_mxdscrp outwaresale_产品名称_规格_配置_配置1_备注 += ';' FETCH cur4 Into :ls_mtrlcode, :ls_mtrlname, :ls_mtrlmode, :ls_qty, :ls_unit, :ls_woodcode, :ls_pcode, :ls_status, :ls_mxdscrp; LOOP CLOSE cur4; select cast(sum( u_outwaremx.packqty) as varchar(10) ) into :outwaresale_包装总件数 from u_outware inner join u_outwaremx on u_outwaremx.scid=u_outware.scid and u_outwaremx.outwareid=u_outware.outwareid Where (u_outwaremx.scid = :arg_scid) And (u_outwaremx.outwareid = :arg_taskid); ELSEIF arg_billtype = 532 THEN SELECT u_cusamt.scid, u_cusamt.cusmonid, u_cusamt.cusid, u_cust.name, u_cust.custype, u_cust.tele_sms, u_cusamt.cusdate, u_cusamt.relcode, u_cust.name, u_cust.rep, u_cusamt.dscrp, u_cust.name, CONVERT(varchar(6) , u_cusamt.viewdate, 112 ), u_accounts.accountsname INTO :arg_scid, :arg_taskid, :arg_sptid, :arg_sptname, :arg_sptrep, :arg_phone, :arg_taskdate, :custamt_相关号, :custamt_客户名称, :custamt_客户联系人, :custamt_摘要, :custamt_客户编号, :custamt_到账日期, :custamt_账号名称 FROM u_cusamt INNER JOIN u_cust ON u_cusamt.cusid = u_cust.cusid left join u_accounts ON u_cusamt.accountid = u_accounts.accountsid Where u_cusamt.cusmoncode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询客户收款单信息失败,' + sqlca.SQLErrText GOTO ext END IF SELECT u_cusamt.cusamt INTO :ld_cusamt FROM u_cusamt Where u_cusamt.cusmoncode = :arg_taskcode; IF sqlca.SQLCode <> 0 THEN ls_rslt = '查询客户收款单金额信息失败,' + sqlca.SQLErrText GOTO ext END IF arg_mx = '金额:' + String(ld_cusamt, '#,##0.##') END IF ll_row = ds_cmp.InsertRow(0) ds_cmp.Object.arg_scid[ll_row] = arg_scid ds_cmp.Object.arg_taskid[ll_row] = arg_taskid ds_cmp.Object.arg_taskcode[ll_row] = arg_taskcode ds_cmp.Object.arg_sptid[ll_row] = arg_sptid ds_cmp.Object.arg_sptname[ll_row] = arg_sptname ds_cmp.Object.arg_sptrep[ll_row] = arg_sptrep ds_cmp.Object.arg_phone[ll_row] = arg_phone ds_cmp.Object.arg_taskdate[ll_row] = arg_taskdate ds_cmp.Object.arg_mx[ll_row] = arg_mx ds_cmp.Object.arg_billamt[ll_row] = String(arg_billamt,'#,##0.00') ds_cmp.Object.arg_freight[ll_row] = arg_freight ds_cmp.Object.arg_rel_rep[ll_row] = arg_rel_rep //单据专用 ds_cmp.Object.outwaresale_业务员[ll_row] = outwaresale_业务员 ds_cmp.Object.outwaresale_业务员备注[ll_row] = outwaresale_业务员备注 ds_cmp.Object.outwaresale_产品名称_规格_配置_配置1_备注[ll_row] = outwaresale_产品名称_规格_配置_配置1_备注 ds_cmp.Object.custamt_相关号[ll_row] = custamt_相关号 ds_cmp.Object.custamt_客户名称[ll_row] = custamt_客户名称 ds_cmp.Object.custamt_客户联系人[ll_row] = custamt_客户联系人 ds_cmp.Object.custamt_摘要[ll_row] = custamt_摘要 ds_cmp.Object.sptamt_相关号[ll_row] = sptamt_相关号 ds_cmp.Object.sptamt_供应商名称[ll_row] = sptamt_供应商名称 ds_cmp.Object.sptamt_摘要[ll_row] = sptamt_摘要 ds_cmp.Object.saletask_相关号[ll_row] = saletask_相关号 ds_cmp.Object.saletask_单据编号[ll_row] = saletask_单据编号 ds_cmp.Object.saletask_货运部[ll_row] = saletask_货运部 ds_cmp.Object.saletask_货运单号[ll_row] = saletask_货运单号 ds_cmp.Object.saletask_包装总件数[ll_row] =saletask_包装总件数 ds_cmp.Object.outwaresale_相关号[ll_row] = outwaresale_相关号 ds_cmp.Object.outwaresale_单据编号[ll_row] = outwaresale_单据编号 ds_cmp.Object.outwaresale_货运部[ll_row] = outwaresale_货运部 ds_cmp.Object.outwaresale_货运单号[ll_row] = outwaresale_货运单号 ds_cmp.Object.outwaresale_包装总件数[ll_row] = outwaresale_包装总件数 ds_cmp.Object.custamt_客户编号[ll_row] = custamt_客户编号 ds_cmp.Object.custamt_到账日期[ll_row] = custamt_到账日期 ds_cmp.Object.custamt_账号名称[ll_row] = custamt_账号名称 ds_cmp.Object.sptamt_供应商编号[ll_row] = sptamt_供应商编号 ds_cmp.Object.sptamt_付账日期[ll_row] = sptamt_付账日期 ds_cmp.Object.sptamt_账号名称[ll_row] = sptamt_账号名称 ls_rs = ds_cmp.Modify("cmp.Expression='"+ arg_command + "'") IF ls_rs <> '' THEN ls_rslt = '表达式错误,' + ls_rs GOTO ext END IF ds_cmp.AcceptText() ls_rslt = String(ds_cmp.Object.cmp[ll_row]) ext: Destroy ds_cmp RETURN ls_rslt end function