1. 第一步 在k3数据库端成两个视图 , 采购入库单(TicketViewBuy)、 销售出库单(TicketViewSale)

//采购入库单视图

USE [K3数据库]
GO
/****** 对象:  View [dbo].[TicketViewBuy]    脚本日期: 07/16/2018 18:41:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER View [dbo].[TicketViewBuy] As   
 Select * From ( Select v1.FInterID AS [FInterID],  
u1.FEntryID AS [FEntryID],  
t3.FName AS [FSupplyID],  
v1.Fdate AS [Fdate],  
v1.FBillNo AS [FBillNo],  
case when v1.FCheckerID>0 then '※' when v1.FCheckerID<0 then '※' else '' end AS [FCheckFlag],  
case when v1.FStatus=3 then '※' else '' end AS [FStatusEx],  
u1.FMapNumber AS [FMapNumber],  
u1.FMapName AS [FMapName],  
t14.FShortNumber AS [FShortNumber],  
t14.Fname AS [FItemID],  
t14.Fmodel AS [Fmodel],  
t17.FName AS [FUnitID],  
t8.FName AS [FCurrencyID],  
v1.FExchangeRate AS [FExchangeRate],

t9.FName AS [FMangerID],  
t10.FName AS [FDeptID],  
t11.FName AS [FEmpID],  
t12.FName AS [FBillerID],  
u1.FSourceTranType AS [FSourceTranType],  
u1.FSourceBillNo AS [FSourceBillNo],  
u1.FAuxQty AS [FAuxQty],  
u1.Fdate AS [FCommitdate],  
u1.Fauxprice AS [Fauxprice],  
u1.FTaxRate AS [FTaxRate],  
u1.FCess AS [FCess],  
u1.FAmount AS [FAmount],  
u1.FNote AS [FNote],  
t13.FName AS [FCheckerID],  
t18.FName AS [FUnitGroupID],  
u1.FQty AS [FQty],  
case when v1.FCancellation=1 then '※' else '' end AS [FCancellation],  
t20.FName AS [FRelateBrID],  
t14.FNumber AS [FNumber],  
t5.FName AS [FPOStyle],  
u1.FCommitQty AS [FCommitQty],  
u1.FAuxCommitQty AS [FAuxCommitQty],  
u1.FStockQty AS [FStockQty],  
u1.FAuxStockQty AS [FAuxStockQty],  
Case WHEN t14.FCUUnitID=0 THEN '' Else t500.FName end AS [FCUUnitID],  
Case WHEN t14.FCUUnitID=0 THEN 0 Else u1.FQty/t500.FCoefficient end AS [FcuQty],
v1.FBrNo as 公司内码ID,
v1.FBillerID as 制单人ID,
v1.FTranType as 单据类型ID,
v1.FDeptID as 部门ID,
v1.FMangerID as  主管ID,
v1.FEmpID as 业务员ID,
v1.FSupplyID as 供应商ID,
v1.FCheckerID as 审核人ID,
v1.FPOStyle as 采购方式ID,
u1.FItemID as 货名ID,
u1.FUnitID as 单位ID,
v1.FStatus as 状态,
round(u1.FAuxQty-u1.FCommitQty,3) as 剩余量

from POOrder v1 (NOLOCK) Left Join POOrderEntry u1 (NOLOCK) on v1.FInterID=u1.FInterID  
 left outer join t_Supplier t3 (NOLOCK) on v1.FSupplyID=t3.FItemID  
 left outer join t_SubMessage t5 (NOLOCK) on v1.FPOStyle=t5.FInterID  
 Left Join t_Currency t8 (NOLOCK) on v1.FCurrencyID=t8.FCurrencyID  
 left outer join t_Emp t9 (NOLOCK) on v1.FMangerID=t9.FItemID  
 left outer join t_Department t10 (NOLOCK) on v1.FDeptID=t10.FItemID  
 left outer join t_Emp t11 (NOLOCK) on v1.FEmpID=t11.FItemID  
 left outer join t_User t12 (NOLOCK) on v1.FBillerID=t12.FUserID  
 left outer join t_User t13 (NOLOCK) on v1.FCheckerID=t13.FUserID  
 Left Join t_ICItem t14 (NOLOCK) on u1.FItemID=t14.FItemID  
 Left Join t_MeasureUnit t17 (NOLOCK) on u1.FUnitID=t17.FItemID  
 Left Join t_MeasureUnit t18 (NOLOCK) on t14.FUnitGroupID=t18.FUnitGroupID  
 left outer join t_SonCompany t20 (NOLOCK) on v1.FRelateBrID=t20.FItemID  
 left outer join t_MeasureUnit t500 (NOLOCK) on t14.FCUUnitID=t500.FItemID  
 left outer join t_Currency t503 (NOLOCK) on v1.FCurrencyID=t503.FCurrencyID

where t18.FStandard=1  
   
) As [TicketViewBuy]

//销售出库单视图

USE [K3数据库]
GO
/****** 对象:  View [dbo].[TicketViewSale]    脚本日期: 07/16/2018 18:45:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[TicketViewSale]
AS
SELECT     FInterID, FEntryID, FCheckFlag, FClosed, Fdate, FCustID, FSaleStyle, FFetchStyle, FBillNo, FCurrencyID, FFetchAdd, FMangerID, FDeptID, FEmpID, FBillerID, FSettleID, 
                  FExchangeRate, FShortNumber, FItemID, Fmodel, FUnitID, FSourceTranType, FSourceBillNo, Fauxqty, Fauxprice, Famount, FTaxRate, FUniDiscount, FTaxAmount, 
                  FFinalAmount, FUnitGroupID, FQty, FLockFlag, FCheckerID, FCommitDate, FNote, FNumber, FCancellation, FCess, FTransitAheadTime, FAdviceConsignDate, 
                  FMapNumber, FMapName, FBomInterID, FRelateBrID, FPOOrdBillNo, FStockQty, FCommitQty, FATPDeduct, FCUUnitID, FcuQty, FauxStockQty, FauxCommitQty, 
                  FCostObjectID, 源单类型ID, 单据类型ID,制单人ID, 公司内码ID, 购货单位ID,部门ID,审核人ID,
                   业务员ID,主管ID, 销售方式ID,单位ID,计划模式ID,产品ID,剩余量
FROM         (SELECT     v1.FInterID, u1.FEntryID, CASE WHEN v1.FCheckerID > 0 THEN '※' WHEN v1.FCheckerID < 0 THEN '※' ELSE '' END AS FCheckFlag, 
CASE WHEN v1.FStatus = 3 THEN '1' ELSE '' END AS FClosed, v1.FDate AS Fdate, t4.FName AS FCustID, t5.FName AS FSaleStyle, 
t7.FName AS FFetchStyle, v1.FBillNo, t8.FName AS FCurrencyID, v1.FFetchAdd, t10.FName AS FMangerID, t11.FName AS FDeptID, t12.FName AS FEmpID, 
t13.FName AS FBillerID, t14.FName AS FSettleID, v1.FExchangeRate, t16.FShortNumber, t16.FName AS FItemID, t16.FModel AS Fmodel, 
t19.FName AS FUnitID, u1.FSourceTranType, u1.FSourceBillNo, u1.FAuxQty AS Fauxqty, u1.FAuxPrice AS Fauxprice, u1.FAmount AS Famount, u1.FTaxRate, 
u1.FUniDiscount, u1.FTaxAmount, u1.FFinalAmount, t25.FName AS FUnitGroupID, u1.FQty,

CASE WHEN u1.FLockFlag = 1 THEN '※' ELSE '' END AS FLockFlag, t24.FName AS FCheckerID, u1.FDate AS FCommitDate, u1.FNote, t16.FNumber, 
CASE WHEN v1.FCancellation = 1 THEN '※' ELSE '' END AS FCancellation, u1.FCESS AS FCess, v1.FTransitAheadTime, u1.FAdviceConsignDate, 
u1.FMapNumber, u1.FMapName,
  (SELECT     FBOMNumber
    FROM          dbo.ICBOM WITH (NOLOCK)
    WHERE      (FInterID = u1.FBomInterID)) AS FBomInterID, t65.FName AS FRelateBrID, v1.FPOOrdBillNo, u1.FStockQty, u1.FCommitQty, 
CASE WHEN u1.FATPDeduct = 1 THEN '※' ELSE '' END AS FATPDeduct, CASE WHEN t16.FCUUnitID = 0 THEN '' ELSE t500.FName END AS FCUUnitID, 
CASE WHEN t16.FCUUnitID = 0 THEN u1.FQty ELSE u1.FQty / t500.FCoefficient END AS FcuQty, 
CASE WHEN t16.FCUUnitID = 0 THEN u1.FStockQty ELSE u1.FStockQty / t500.FCoefficient END AS FauxStockQty, 
CASE WHEN t16.FCUUnitID = 0 THEN u1.FCommitQty ELSE u1.FCommitQty / t500.FCoefficient END AS FauxCommitQty, t21.FName AS FCostObjectID, 
                                           
v1.FSelTranType as 源单类型ID, 
v1.FTranType as 单据类型ID, 
v1.FBillerID as 制单人ID,
v1.FBrNo  as 公司内码ID,
v1.FCustID  as 购货单位ID,
v1.FEmpID  as 业务员ID,
v1.FDeptID as 部门ID,
v1.FCheckerID as 审核人ID,
v1.FMangerID as 主管ID,
v1.FSaleStyle as 销售方式ID,
u1.FUnitID as 单位ID,
u1.FPlanMode as 计划模式ID,
u1.FItemID as 产品ID,
round(u1.fQty - u1.fCommitQty,3) as 剩余量
FROM                     
 dbo.SEOrder AS v1 WITH (NOLOCK) LEFT OUTER JOIN
  dbo.SEOrderEntry AS u1 WITH (NOLOCK) ON v1.FInterID = u1.FInterID LEFT OUTER JOIN
  dbo.t_Organization AS t4 WITH (NOLOCK) ON v1.FCustID = t4.FItemID LEFT OUTER JOIN
  dbo.t_SubMessage AS t5 WITH (NOLOCK) ON v1.FSaleStyle = t5.FInterID LEFT OUTER JOIN
  dbo.t_SubMessage AS t7 WITH (NOLOCK) ON v1.FFetchStyle = t7.FInterID LEFT OUTER JOIN
  dbo.t_Currency AS t8 WITH (NOLOCK) ON v1.FCurrencyID = t8.FCurrencyID LEFT OUTER JOIN
  dbo.t_Emp AS t10 WITH (NOLOCK) ON v1.FMangerID = t10.FItemID LEFT OUTER JOIN
  dbo.t_Department AS t11 WITH (NOLOCK) ON v1.FDeptID = t11.FItemID LEFT OUTER JOIN
  dbo.t_Emp AS t12 WITH (NOLOCK) ON v1.FEmpID = t12.FItemID LEFT OUTER JOIN
  dbo.t_User AS t13 WITH (NOLOCK) ON v1.FBillerID = t13.FUserID LEFT OUTER JOIN
  dbo.t_Settle AS t14 WITH (NOLOCK) ON v1.FSettleID = t14.FItemID LEFT OUTER JOIN
  dbo.t_ICItem AS t16 WITH (NOLOCK) ON u1.FItemID = t16.FItemID LEFT OUTER JOIN
  dbo.t_MeasureUnit AS t19 WITH (NOLOCK) ON u1.FUnitID = t19.FItemID LEFT OUTER JOIN
  dbo.t_MeasureUnit AS t25 WITH (NOLOCK) ON t16.FUnitGroupID = t25.FUnitGroupID LEFT OUTER JOIN
  dbo.t_User AS t24 WITH (NOLOCK) ON v1.FCheckerID = t24.FUserID LEFT OUTER JOIN
  dbo.cbCostObj AS t21 WITH (NOLOCK) ON u1.FCostObjectID = t21.FItemID LEFT OUTER JOIN
  dbo.t_SonCompany AS t65 WITH (NOLOCK) ON v1.FRelateBrID = t65.FItemID LEFT OUTER JOIN
  dbo.t_MeasureUnit AS t500 WITH (NOLOCK) ON t16.FCUUnitID = t500.FItemID LEFT OUTER JOIN
  dbo.t_Currency AS t504 WITH (NOLOCK) ON v1.FCurrencyID = t504.FCurrencyID ---LEFT OUTER JOIN
  WHERE      (t25.FStandard = 1)) AS TicketViewSale

2.第二步 在本地生成 两个表 用来存储订单信息,分别对应 采购入库单和销售出库单,表明分别是: TicketBuy、TicketSale

//存放采购订单信息

USE [本地客户端数据库]
GO
/****** 对象:  Table [dbo].[TicketBuy]    脚本日期: 07/16/2018 18:52:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TicketBuy](
    [FInterID] [int] NOT NULL,
    [FEntryID] [int] NULL,
    [FSupplyID] [varchar](80) NULL,
    [Fdate] [nvarchar](50) NULL,
    [FBillNo] [nvarchar](255) NOT NULL,
    [FCheckFlag] [varchar](2) NOT NULL,
    [FStatusEx] [varchar](2) NOT NULL,
    [FMapNumber] [varchar](80) NULL,
    [FMapName] [nvarchar](256) NULL,
    [FShortNumber] [varchar](80) NULL,
    [FItemID] [varchar](255) NULL,
    [Fmodel] [varchar](255) NULL,
    [FUnitID] [varchar](80) NULL,
    [FCurrencyID] [varchar](40) NULL,
    [FExchangeRate] [float] NULL,
    [FMangerID] [varchar](255) NULL,
    [FDeptID] [varchar](80) NULL,
    [FEmpID] [varchar](255) NULL,
    [FBillerID] [nvarchar](50) NULL,
    [FSourceTranType] [int] NULL,
    [FSourceBillNo] [nvarchar](255) NULL,
    [FAuxQty] [decimal](28, 10) NULL,
    [FCommitdate] [nvarchar](50) NULL,
    [Fauxprice] [decimal](28, 10) NULL,
    [FTaxRate] [decimal](28, 10) NULL,
    [FCess] [decimal](20, 2) NULL,
    [FAmount] [decimal](20, 2) NULL,
    [FNote] [varchar](1024) NULL,
    [FCheckerID] [nvarchar](50) NULL,
    [FUnitGroupID] [varchar](80) NULL,
    [FQty] [decimal](28, 10) NULL,
    [FCancellation] [varchar](2) NOT NULL,
    [FRelateBrID] [varchar](80) NULL,
    [FNumber] [varchar](80) NULL,
    [FPOStyle] [varchar](80) NULL,
    [FCommitQty] [decimal](28, 10) NULL,
    [FAuxCommitQty] [decimal](28, 10) NULL,
    [FStockQty] [decimal](28, 10) NULL,
    [FAuxStockQty] [decimal](28, 10) NULL,
    [FCUUnitID] [varchar](80) NULL,
    [FcuQty] [decimal](38, 10) NULL,
    [公司内码ID] [nvarchar](50) NULL,
    [制单人ID] [int] NULL,
    [单据类型ID] [int] NOT NULL,
    [部门ID] [int] NULL,
    [主管ID] [int] NULL,
    [业务员ID] [int] NULL,
    [供应商ID] [int] NULL,
    [审核人ID] [int] NULL,
    [采购方式ID] [int] NULL,
    [货名ID] [int] NULL,
    [单位ID] [int] NULL,
    [状态] [nvarchar](50) NULL,
    [剩余量] [nvarchar](50) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

//存放销售订单信息

USE [本地客户端数据库]
GO
/****** 对象:  Table [dbo].[TicketSale]    脚本日期: 07/16/2018 18:53:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TicketSale](
    [FInterID] [int] NOT NULL,
    [FEntryID] [int] NULL,
    [FCheckFlag] [varchar](2) NOT NULL,
    [FClosed] [varchar](1) NOT NULL,
    [Fdate] [nvarchar](50) NULL,
    [FCustID] [varchar](80) NULL,
    [FSaleStyle] [varchar](80) NULL,
    [FFetchStyle] [varchar](80) NULL,
    [FBillNo] [nvarchar](255) NOT NULL,
    [FCurrencyID] [varchar](40) NULL,
    [FFetchAdd] [varchar](255) NULL,
    [FMangerID] [varchar](255) NULL,
    [FDeptID] [varchar](80) NULL,
    [FEmpID] [varchar](255) NULL,
    [FBillerID] [nvarchar](50) NULL,
    [FSettleID] [varchar](80) NULL,
    [FExchangeRate] [float] NULL,
    [FShortNumber] [varchar](80) NULL,
    [FItemID] [varchar](255) NULL,
    [Fmodel] [varchar](255) NULL,
    [FUnitID] [varchar](80) NULL,
    [FSourceTranType] [int] NULL,
    [FSourceBillNo] [nvarchar](255) NULL,
    [Fauxqty] [decimal](28, 10) NULL,
    [Fauxprice] [decimal](28, 10) NULL,
    [Famount] [decimal](20, 2) NULL,
    [FTaxRate] [decimal](28, 10) NULL,
    [FUniDiscount] [decimal](28, 10) NULL,
    [FTaxAmount] [decimal](20, 2) NULL,
    [FFinalAmount] [decimal](20, 2) NULL,
    [FUnitGroupID] [varchar](80) NULL,
    [FQty] [decimal](28, 10) NULL,
    [FLockFlag] [varchar](2) NOT NULL,
    [FCheckerID] [nvarchar](50) NULL,
    [FCommitDate] [nvarchar](50) NULL,
    [FNote] [varchar](1024) NULL,
    [FNumber] [varchar](80) NULL,
    [FCancellation] [varchar](2) NOT NULL,
    [FCess] [decimal](20, 2) NULL,
    [FTransitAheadTime] [real] NULL,
    [FAdviceConsignDate] [nvarchar](50) NULL,
    [FMapNumber] [varchar](80) NULL,
    [FMapName] [nvarchar](256) NULL,
    [FBomInterID] [varchar](300) NULL,
    [FRelateBrID] [varchar](80) NULL,
    [FPOOrdBillNo] [nvarchar](510) NULL,
    [FStockQty] [decimal](28, 10) NULL,
    [FCommitQty] [decimal](28, 10) NULL,
    [FATPDeduct] [varchar](2) NOT NULL,
    [FCUUnitID] [varchar](80) NULL,
    [FcuQty] [decimal](38, 10) NULL,
    [FauxStockQty] [decimal](38, 10) NULL,
    [FauxCommitQty] [decimal](38, 10) NULL,
    [FCostObjectID] [varchar](255) NULL,
    [源单类型ID] [int] NOT NULL,
    [单据类型ID] [int] NOT NULL,
    [制单人ID] [int] NULL,
    [公司内码ID] [varchar](10) NOT NULL,
    [购货单位ID] [int] NULL,
    [部门ID] [int] NULL,
    [业务员ID] [int] NULL,
    [主管ID] [int] NULL,
    [销售方式ID] [int] NULL,
    [单位ID] [int] NULL,
    [计划模式ID] [int] NULL,
    [产品ID] [int] NULL,
    [剩余量] [decimal](29, 10) NULL,
    [审核人ID] [int] NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

3.C# webService 调用k3,下载订单信息和上传出入库信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;

/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
    public Dictionary<string, string> mSaverFiled = new Dictionary<string, string>();
    public WebService()
    {

//,如果使用设计的组件请取消注释以下行 
        //InitializeComponent(); 
        DataBaseHelper.getConnStr();
    }

[WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

[WebMethod]
    public string restart()
    {
        DataBaseHelper.mConnString = string.Empty;
        DataBaseHelper.getConnStr();
        return "重新设置成功!";
    }

/// <summary>
    /// 销售订单
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string getSaleTicket()
    {
        string sql = "select * from TicketViewSale ";
        DataTable dt = DataBaseHelper.getTable(sql);
        dt.TableName = "SaleTicket";
        StringWriter strWriter = new StringWriter();
        dt.WriteXml(strWriter, false);
        string strXml = strWriter.ToString();
        strWriter.Close();
        return strXml;
    }

/// <summary>
    /// 采购订单
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string getBuyTicket()
    {
        string sql = "select * from TicketViewBuy";
        DataTable dt = DataBaseHelper.getTable(sql);
        dt.TableName = "BuyTicket";
        StringWriter strWriter = new StringWriter();
        dt.WriteXml(strWriter, false);
        string strXml = strWriter.ToString();
        return strXml;
    }

/// <summary>
    /// 下载职员表
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string getElem()
    {
        try
        {
            string sql = " select * from t_Emp  where FDeleted='0' ";
            DataTable dt = DataBaseHelper.getTable(sql);
            dt.TableName = "elemployee";
            string xmlStr = new DataTableToXmlHelper().dataTable2XmlStr(dt);
            return xmlStr;
        }
        catch (Exception ex)
        {
            return "";
        }
    }

/// <summary>
    /// 下载仓库表
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string getStock()
    {
        string sql = " select FItemID,fname from t_Stock ";
        DataTable dt = DataBaseHelper.getTable(sql);
        dt.TableName = "Stock";
        string xmlStr = new DataTableToXmlHelper().dataTable2XmlStr(dt);
        return xmlStr;
    }

/// <summary>
    /// 上传销售订单
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [WebMethod]
    public string uploadSale(string xmlData)
    {
        string result = string.Empty;
        if (string.IsNullOrEmpty(xmlData)) return "{\"result\":\"false\",\"tip\":\"请求字符串为空\"}";
        DataTable dt = new DataTableToXmlHelper().xmlTodataTable(xmlData);
        if (dt != null)
        {
            using (SqlConnection conn = new SqlConnection(DataBaseHelper.mConnString))
            {
                SqlTransaction tran = null;
                try
                {
                    conn.Open();
                    tran = conn.BeginTransaction();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.Transaction = tran;

//计算出主表ID
                    int fBillId = Convert.ToInt32(dt.Rows[0]["制单人ID"].ToString());
                    string fid = getMaxId(fBillId);

if (string.IsNullOrEmpty(fid))
                    {
                        return "{\"result\":\"false\",\"tip\":\"获取业务流水失败\"}";
                    }

//添加主表
                    StringBuilder sqlBuider = new StringBuilder(" insert into ICStockBill")
                    .Append("(FBrNo,FInterID,FTranType,FDate,FBillNo,FDeptID,FEmpID,FSupplyID,FCheckerID,")
                    .Append("FVchInterID,FSManagerID,FFManagerID,FRelateBrID,FManagerId,")
                    .Append("FSelTranType,fChildren,FBrId,")
                    .Append("FBillerID,FSaleStyle,FROB,FStatus,FUpStockWhenSave,Fnote)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'21',")
                    .Append("'").Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("',")
                    .Append("'").Append(dt.Rows[0]["id"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["部门ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["业务员ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["购货单位ID"].ToString()).Append("',")
                    .Append("'',")
                    .Append("'0',") //凭证内码
                    .Append("'").Append(dt.Rows[0]["保管人"].ToString()).Append("',") //保管人
                    .Append("'").Append(dt.Rows[0]["验收人"].ToString()).Append("',")//验收人
                    .Append("'0',") //分支机构内码
                     .Append("'").Append(dt.Rows[0]["主管ID"].ToString()).Append("',")//制单人
                     .Append("'81',")//源单类型
                     .Append("'1',")//关联标识
                     .Append("'0',")//制单机构
                    .Append("'").Append(dt.Rows[0]["制单人ID"].ToString()).Append("',")//制单人
                    .Append("'").Append(dt.Rows[0]["销售方式ID"].ToString()).Append("',") //销售方式
                    .Append("'1',") //红蓝字
                    .Append("'1',")//状态
                    .Append("'0',") //更新库存
                    .Append("'").Append(dt.Rows[0]["PrintNumber"].ToString()).Append("')");

//添加子表
                    StringBuilder sqlBuiderEntry = new StringBuilder(" insert into ICStockBillEntry(FBrNo,FInterId,fentryId,FitemId")
                    .Append(",FqtyMust,Fqty,Fprice,FAmount,FUnitID,FAuxPrice,FauxQty,FauxQtyMust,FConsignPrice,FConsignAmount,")
                    .Append("FSourceTranType,FSourceInterId,FSourceEntryId,FSourceBillNo,FOrderBillNo,FOrderInterID,FOrderEntryID,")
                    .Append("FDCStockID)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'").Append("1").Append("',")
                    .Append("'").Append(dt.Rows[0]["产品ID"].ToString()).Append("',")//货名ID
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',")//申请数量
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //实际数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //金额
                    .Append("'").Append(dt.Rows[0]["单位ID"].ToString()).Append("',") //单位
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',")//辅助单价
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //辅助实际数量
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',") //辅助账存数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //代销单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //代销金额
                    .Append("'").Append(dt.Rows[0]["单据类型ID"].ToString()).Append("',") //源单类型
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //源单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',") //原分录号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //源单单号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //订单单号
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //订单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',")//订单分录
                    .Append("'").Append(dt.Rows[0]["仓库编号"].ToString()).Append("'")//仓库编号
                    .Append(")");

//更新计划
                    StringBuilder updateTicket = new StringBuilder(" update SEOrderEntry set ")
                    .Append("FCommitQty=FCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxCommitQty=FAuxCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FStockQty=FStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxStockQty=FAuxStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FQtyInvoice=FQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxQtyInvoice=FAuxQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("'")
                    .Append(" where fInterID='").Append(dt.Rows[0]["FInterID"].ToString()).Append("'")
                    .Append(" and FEntryID='").Append(dt.Rows[0]["FEntryID"].ToString()).Append("'");

//更新maxId
                   // string updateMaxId = "update ICMaxNum set FMaxNum=FMaxNum+1 where ftablename='ICStockBill'";
                    List<string> sqlList = new List<string>();
                    sqlList.Add(sqlBuider.ToString());
                    sqlList.Add(sqlBuiderEntry.ToString());
                    sqlList.Add(updateTicket.ToString());
                   // sqlList.Add(updateMaxId);

for (int index = 0; index < sqlList.Count; index++)
                    {
                        cmd.CommandText = sqlList[index];
                        cmd.ExecuteNonQuery();
                    }

tran.Commit();
                    result = "{\"result\":\"true\",\"tip\":\"上传成功\"}";
                }
                catch (Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    result = "{\"result\":\"false\",\"tip\":\"" + ex.Message + ex.StackTrace + "\"}";
                }
            }
        }
        else
        {
            result = "{\"result\":\"false\",\"tip\":\"解析错误!\"}";
        }
        return result;
    }

/// <summary>
    /// 修改销售订单
    /// </summary>
    /// <param name="xmlData">修改的称重数据</param>
    /// <param name="oldWeightId">被修该的称重ID</param>
    /// <param name="ticketId">被修改的过磅订单编号</param>
    /// <param name="oldNet">被修改的净重</param>
    /// <returns></returns>
    [WebMethod]
    public string updateSale(string xmlData, string oldWeightId, string fInnerId,string entryId , string oldNet)
    {
        string result = string.Empty;
        if (string.IsNullOrEmpty(xmlData)) return "{\"result\":\"false\",\"tip\":\"请求字符串为空\"}";
        DataTable dt = new DataTableToXmlHelper().xmlTodataTable(xmlData);
        if (dt != null)
        {
            SqlTransaction tran = null;
            using (SqlConnection conn = new SqlConnection(DataBaseHelper.mConnString))
            {
                try
                {

conn.Open();
                    tran = conn.BeginTransaction();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.Transaction = tran;

//删除 出库单信息
                    string deleteStocke = "delete from icStockBill where FBillNo='" + oldWeightId + "'";
                    cmd.CommandText = deleteStocke;
                    int count = cmd.ExecuteNonQuery();
                    if (count == 0)
                    {
                        tran.Rollback();
                        return "{\"result\":\"false\",\"tip\":\"删除销售出库单出错\"}";
                    }

//更新合同信息
                    StringBuilder rollBackTicket = new StringBuilder(" update SEOrderEntry set ")
                  .Append("FCommitQty=FCommitQty-'").Append(oldNet).Append("',")
                  .Append("FAuxCommitQty=FAuxCommitQty-'").Append(oldNet).Append("',")
                  .Append("FStockQty=FAuxCommitQty-'").Append(oldNet).Append("',")
                  .Append("FAuxStockQty=FAuxCommitQty-'").Append(oldNet).Append("',")
                  .Append("FQtyInvoice=FAuxCommitQty-'").Append(oldNet).Append("',")
                  .Append("FAuxQtyInvoice=FAuxCommitQty-'").Append(oldNet).Append("'")
                  .Append(" where FInterId='").Append(fInnerId).Append("'")
                  .Append(" and FEntryId='").Append(entryId).Append("'");
                    cmd.CommandText = rollBackTicket.ToString();
                    count = cmd.ExecuteNonQuery();
                    if (count == 0)
                    {
                        tran.Rollback();
                        return "{\"result\":\"false\",\"tip\":\"回滚计划出错\"}";
                    }

//计算出主表ID
                    int fBillId = Convert.ToInt32(dt.Rows[0]["制单人ID"].ToString());
                    string fid = getMaxId(fBillId);

if (string.IsNullOrEmpty(fid))
                    {
                        return "{\"result\":\"false\",\"tip\":\"获取业务流水失败\"}";
                    }

//添加主表
                    StringBuilder sqlBuider = new StringBuilder(" insert into ICStockBill")
                    .Append("(FBrNo,FInterID,FTranType,FDate,FBillNo,FDeptID,FEmpID,FSupplyID,FCheckerID,")
                    .Append("FVchInterID,FSManagerID,FFManagerID,FRelateBrID,FManagerId,")
                    .Append("FSelTranType,fChildren,FBrId,")
                    .Append("FBillerID,FSaleStyle,FROB,FStatus,FUpStockWhenSave,Fnote)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'21',")
                    .Append("'").Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("',")
                    .Append("'").Append(dt.Rows[0]["id"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["部门ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["业务员ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["购货单位ID"].ToString()).Append("',")
                    .Append("'',")
                    .Append("'0',") //凭证内码
                    .Append("'").Append(dt.Rows[0]["保管人"].ToString()).Append("',") //保管人
                    .Append("'").Append(dt.Rows[0]["验收人"].ToString()).Append("',")//验收人
                    .Append("'0',") //分支机构内码
                     .Append("'").Append(dt.Rows[0]["主管ID"].ToString()).Append("',")//制单人
                     .Append("'81',")//源单类型
                     .Append("'1',")//关联标识
                     .Append("'0',")//制单机构
                    .Append("'").Append(dt.Rows[0]["制单人ID"].ToString()).Append("',")//制单人
                    .Append("'").Append(dt.Rows[0]["销售方式ID"].ToString()).Append("',") //销售方式
                    .Append("'1',") //红蓝字
                    .Append("'1',")//状态
                    .Append("'0',") //更新库存
                    .Append("'").Append(dt.Rows[0]["Platenumber"].ToString()).Append("')");

//添加子表
                    StringBuilder sqlBuiderEntry = new StringBuilder(" insert into ICStockBillEntry(FBrNo,FInterId,fentryId,FitemId")
                    .Append(",FqtyMust,Fqty,Fprice,FAmount,FUnitID,FAuxPrice,FauxQty,FauxQtyMust,FConsignPrice,FConsignAmount,")
                    .Append("FSourceTranType,FSourceInterId,FSourceEntryId,FSourceBillNo,FOrderBillNo,FOrderInterID,FOrderEntryID,")
                    .Append("FDCStockID)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'").Append("1").Append("',")
                    .Append("'").Append(dt.Rows[0]["产品ID"].ToString()).Append("',")//货名ID
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',")//申请数量
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //实际数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //金额
                    .Append("'").Append(dt.Rows[0]["单位ID"].ToString()).Append("',") //单位
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',")//辅助单价
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //辅助实际数量
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',") //辅助账存数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //代销单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //代销金额
                    .Append("'").Append(dt.Rows[0]["单据类型ID"].ToString()).Append("',") //源单类型
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //源单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',") //原分录号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //源单单号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //订单单号
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //订单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',")//订单分录
                    .Append("'").Append(dt.Rows[0]["仓库编号"].ToString()).Append("'")//仓库编号
                    .Append(")");

//更新计划
                    StringBuilder updateTicket = new StringBuilder(" update SEOrderEntry set ")
                    .Append("FCommitQty=FCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxCommitQty=FAuxCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FStockQty=FStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxStockQty=FAuxStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FQtyInvoice=FQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxQtyInvoice=FAuxQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("'")
                    .Append(" where FInterId='").Append(fInnerId).Append("'")
                    .Append(" and FEntryId='").Append(entryId).Append("'");

//更新maxId
                    //string updateMaxId = "update ICMaxNum set FMaxNum=FMaxNum+1 where ftablename='ICStockBill'";

List<string> sqlList = new List<string>();
                    sqlList.Add(sqlBuider.ToString());
                    sqlList.Add(sqlBuiderEntry.ToString());
                    sqlList.Add(updateTicket.ToString());
                  //  sqlList.Add(updateMaxId);

for (int index = 0; index < sqlList.Count; index++)
                    {
                        cmd.CommandText = sqlList[index];
                        cmd.ExecuteNonQuery();
                    }

tran.Commit();
                    result = "{\"result\":\"true\",\"tip\":\"修改成功\"}";
                }
                catch (Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    result = "{\"result\":\"false\",\"tip\":\"" + ex.Message + ex.StackTrace + "\"}";
                }
            }

}
        else
        {
            result = "{\"result\":\"false\",\"tip\":\"解析错误!\"}";
        }
        return result;
    }

/// <summary>
    /// 获取订单剩余量
    /// </summary>
    /// <param name="ticketNo">订单编号</param>
    /// <returns></returns>
    [WebMethod]
    public string getSaleSurplus(string ticketNo)
    {
        string result = "{\"result\":\"false\",\"val\":\"0\",\"flag\":\"-1\"}";
        string sql = "select  剩余量,FClosed from TicketViewsale where FBillNo='" + ticketNo + "'";
        DataTable dt = DataBaseHelper.getTable(sql);
        if (dt != null && dt.Rows.Count > 0)
        {
            result = "{\"result\":\"true\",\"val\":\"" + dt.Rows[0]["剩余量"].ToString() + "\",\"flag\":\"" + dt.Rows[0]["FClosed"].ToString() + "\"}";
        }
        return result;
    }

/// <summary>
    ///获取采购订单
    /// </summary>
    /// <param name="ticketNo"></param>
    /// <returns></returns>
    [WebMethod]
    public string getBuySurplus(string ticketNo)
    {
        string result = "{\"result\":\"false\",\"val\":\"0\",\"flag\":\"-1\"}";
        string sql = "select  剩余量,状态 from TicketViewBuy where FBillNo='" + ticketNo + "'";
        DataTable dt = DataBaseHelper.getTable(sql);
        if (dt != null && dt.Rows.Count > 0)
        {
            result = "{\"result\":\"true\",\"val\":\"" + dt.Rows[0]["剩余量"].ToString() + "\",\"flag\":\"" + dt.Rows[0]["状态"].ToString() + "\"}";
        }
        return result;
    }

/// <summary>
    /// 上传采购订单
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>

[WebMethod]
    public string uploadBuy(string xmlData)
    {
        string result = string.Empty;
        if (string.IsNullOrEmpty(xmlData)) return "{\"result\":\"false\",\"tip\":\"请求字符串为空\"}";
        DataTable dt = new DataTableToXmlHelper().xmlTodataTable(xmlData);
        if (dt != null)
        {
            using (SqlConnection conn = new SqlConnection(DataBaseHelper.mConnString))
            {
                SqlTransaction tran = null;
                try
                {

conn.Open();
                    tran = conn.BeginTransaction();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.Transaction = tran;

//计算出主表ID
                    int fBillId = Convert.ToInt32(dt.Rows[0]["制单人ID"].ToString());
                    string fid = getMaxId(fBillId);
                    if (string.IsNullOrEmpty(fid))
                    {
                        return "{\"result\":\"false\",\"tip\":\"获取业务流水失败\"}";
                    }

//添加主表
                    StringBuilder sqlBuider = new StringBuilder(" insert into ICStockBill")
                    .Append("(FBrNo,FInterID,FTranType,FDate,FBillNo,FDeptID,FEmpID,FSupplyID,FCheckerID,")
                    .Append("FVchInterID,FSManagerID,FFManagerID,FRelateBrID,FManagerId,")
                    .Append("FSelTranType,fChildren,FBrId,")
                    .Append("FBillerID,FPOStyle,FROB,FStatus,FUpStockWhenSave,FSettleDate,Fnote)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'1',")
                    .Append("'").Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("',")
                    .Append("'").Append(dt.Rows[0]["id"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["部门ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["业务员ID"].ToString()).Append("',")
                    .Append("'").Append(dt.Rows[0]["供应商ID"].ToString()).Append("',")
                    .Append("'',")
                    .Append("'0',") //凭证内码
                    .Append("'").Append(dt.Rows[0]["保管人"].ToString()).Append("',") //保管人
                    .Append("'").Append(dt.Rows[0]["验收人"].ToString()).Append("',")//验收人
                    .Append("'0',") //分支机构内码
                     .Append("'").Append(dt.Rows[0]["主管ID"].ToString()).Append("',")//制单人
                     .Append("'71',")//源单类型(采购的为71)
                     .Append("'1',")//关联标识
                     .Append("'0',")//制单机构
                    .Append("'").Append(dt.Rows[0]["制单人ID"].ToString()).Append("',")//制单人
                    .Append("'").Append(dt.Rows[0]["采购方式ID"].ToString()).Append("',") //销售方式
                    .Append("'1',") //红蓝字
                    .Append("'1',")//状态
                    .Append("'0',") //更新库存
                    .Append("'").Append(dt.Rows[0]["sDate"].ToString() + " 00:00:00.000").Append("',") //销售方式
                    .Append("'").Append(dt.Rows[0]["PrintNumber"].ToString()).Append("')");

//添加子表
                    StringBuilder sqlBuiderEntry = new StringBuilder(" insert into ICStockBillEntry(FBrNo,FInterId,fentryId,FitemId")
                    .Append(",FqtyMust,Fqty,Fprice,FAmount,FUnitID,FAuxPrice,FauxQty,FauxQtyMust,FConsignPrice,FConsignAmount,")
                    .Append("FSourceTranType,FSourceInterId,FSourceEntryId,FSourceBillNo,FOrderBillNo,FOrderInterID,FOrderEntryID,")
                    .Append("FDCStockID)values(")
                    .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                    .Append("'").Append(fid).Append("',")
                    .Append("'").Append("1").Append("',")
                    .Append("'").Append(dt.Rows[0]["货名ID"].ToString()).Append("',")//货名ID
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',")//申请数量
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //实际数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //金额
                    .Append("'").Append(dt.Rows[0]["单位ID"].ToString()).Append("',") //单位
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',")//辅助单价
                    .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //辅助实际数量
                    .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',") //辅助账存数量
                    .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //代销单价
                    .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //代销金额
                    .Append("'").Append(dt.Rows[0]["单据类型ID"].ToString()).Append("',") //源单类型
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //源单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',") //原分录号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //源单单号
                    .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //订单单号
                    .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //订单编号
                    .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',")//订单分录
                    .Append("'").Append(dt.Rows[0]["仓库编号"].ToString()).Append("'")//仓库编号
                    .Append(")");

//更新计划
                    StringBuilder updateTicket = new StringBuilder(" update POOrderEntry set ")
                    .Append("FCommitQty=FCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxCommitQty=FAuxCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FStockQty=FStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxStockQty=FAuxStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FQtyInvoice=FQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                    .Append("FAuxQtyInvoice=FAuxQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("'")
                    .Append(" where fInterID='").Append(dt.Rows[0]["FInterID"].ToString()).Append("'")
                    .Append(" and FEntryID='").Append(dt.Rows[0]["FEntryID"].ToString()).Append("'");

//更新maxId
                    //string updateMaxId = "update ICMaxNum set FMaxNum=FMaxNum+1 where ftablename='ICStockBill'";

List<string> sqlList = new List<string>();
                    sqlList.Add(sqlBuider.ToString());
                    sqlList.Add(sqlBuiderEntry.ToString());
                    sqlList.Add(updateTicket.ToString());
                   // sqlList.Add(updateMaxId);
                    for (int index = 0; index < sqlList.Count; index++)
                    {
                        cmd.CommandText = sqlList[index];
                        cmd.ExecuteNonQuery();
                    }

tran.Commit();
                    result = "{\"result\":\"true\",\"tip\":\"上传成功\"}";
                }
                catch (Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    result = "{\"result\":\"false\",\"tip\":\"" + ex.Message + ex.StackTrace + "\"}";
                }
            }
        }
        else
        {
            result = "{\"result\":\"false\",\"tip\":\"解析错误!\"}";
        }
        return result;
    }

/// <summary>
     /// 修改采购订单
     /// </summary>
     /// <param name="xmlData">修改的称重数据</param>
     /// <param name="oldWeightId">被修该的称重ID</param>
     /// <param name="ticketId">被修改的过磅订单编号</param>
     /// <param name="oldNet">被修改的净重</param>
     /// <returns></returns>
     [WebMethod]
     public string updateBuy(string xmlData, string oldWeightId, string fInnerId, string entryId, string oldNet)
     {
         string result = string.Empty;
         if (string.IsNullOrEmpty(xmlData)) return "{\"result\":\"false\",\"tip\":\"请求字符串为空\"}";
         DataTable dt = new DataTableToXmlHelper().xmlTodataTable(xmlData);
         if (dt != null)
         {
             SqlTransaction tran = null;
             using (SqlConnection conn = new SqlConnection(DataBaseHelper.mConnString))
             {
                 try
                 {
                     conn.Open();
                     tran = conn.BeginTransaction();
                     SqlCommand cmd = new SqlCommand();
                     cmd.Connection = conn;
                     cmd.Transaction = tran;

//删除 出库单信息
                     string deleteStocke = "delete from icStockBill where FBillNo='" + oldWeightId + "'";
                     cmd.CommandText = deleteStocke;
                     int count = cmd.ExecuteNonQuery();
                     if (count == 0)
                     {
                         tran.Rollback();
                         return "{\"result\":\"false\",\"tip\":\"删除销售出库单出错\"}";
                     }

//更新计划
                     StringBuilder rollBackTicket = new StringBuilder(" update POOrderEntry set ")
                     .Append("FCommitQty=FCommitQty-'").Append(oldNet).Append("',")
                     .Append("FAuxCommitQty=FAuxCommitQty-'").Append(oldNet).Append("',")
                     .Append("FStockQty=FStockQty-'").Append(oldNet).Append("',")
                     .Append("FAuxStockQty=FAuxStockQty-'").Append(oldNet).Append("',")
                     .Append("FQtyInvoice=FQtyInvoice-'").Append(oldNet).Append("',")
                     .Append("FAuxQtyInvoice=FAuxQtyInvoice-'").Append(oldNet).Append("'")
                     .Append(" where fInterID='").Append(dt.Rows[0]["FInterID"].ToString()).Append("'")
                     .Append(" and FEntryID='").Append(dt.Rows[0]["FEntryID"].ToString()).Append("'");

cmd.CommandText = rollBackTicket.ToString();
                     count = cmd.ExecuteNonQuery();
                     if (count == 0)
                     {
                         tran.Rollback();
                         return "{\"result\":\"false\",\"tip\":\"回滚计划出错\"}";
                     }

//计算出主表ID
                     int fBillId = Convert.ToInt32(dt.Rows[0]["制单人ID"].ToString());
                     string fid = getMaxId(fBillId);
                     if (string.IsNullOrEmpty(fid))
                     {
                         return "{\"result\":\"false\",\"tip\":\"获取业务流水失败\"}";
                     }

//添加主表
                     StringBuilder sqlBuider = new StringBuilder(" insert into ICStockBill")
                     .Append("(FBrNo,FInterID,FTranType,FDate,FBillNo,FDeptID,FEmpID,FSupplyID,FCheckerID,")
                     .Append("FVchInterID,FSManagerID,FFManagerID,FRelateBrID,FManagerId,")
                     .Append("FSelTranType,fChildren,FBrId,")
                     .Append("FBillerID,FPOStyle,FROB,FStatus,FUpStockWhenSave,FSettleDate,Fnote)values(")
                     .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                     .Append("'").Append(fid).Append("',")
                     .Append("'1',")
                     .Append("'").Append(DateTime.Now.ToString("yyyy-MM-dd")).Append("',")
                     .Append("'").Append(dt.Rows[0]["id"].ToString()).Append("',")
                     .Append("'").Append(dt.Rows[0]["部门ID"].ToString()).Append("',")
                     .Append("'").Append(dt.Rows[0]["业务员ID"].ToString()).Append("',")
                     .Append("'").Append(dt.Rows[0]["供应商ID"].ToString()).Append("',")
                     .Append("'',")
                     .Append("'0',") //凭证内码
                     .Append("'").Append(dt.Rows[0]["保管人"].ToString()).Append("',") //保管人
                     .Append("'").Append(dt.Rows[0]["验收人"].ToString()).Append("',")//验收人
                     .Append("'0',") //分支机构内码
                      .Append("'").Append(dt.Rows[0]["主管ID"].ToString()).Append("',")//制单人
                      .Append("'71',")//源单类型(采购的为71)
                      .Append("'1',")//关联标识
                      .Append("'0',")//制单机构
                     .Append("'").Append(dt.Rows[0]["制单人ID"].ToString()).Append("',")//制单人
                     .Append("'").Append(dt.Rows[0]["采购方式ID"].ToString()).Append("',") //销售方式
                     .Append("'1',") //红蓝字
                     .Append("'1',")//状态
                     .Append("'0',") //更新库存
                      .Append("'").Append(dt.Rows[0]["sDate"].ToString() + " 00:00:00.000").Append("',") //销售方式
                     .Append("'").Append(dt.Rows[0]["PrintNumber"].ToString()).Append("')");

//添加子表
                     StringBuilder sqlBuiderEntry = new StringBuilder(" insert into ICStockBillEntry(FBrNo,FInterId,fentryId,FitemId")
                     .Append(",FqtyMust,Fqty,Fprice,FAmount,FUnitID,FAuxPrice,FauxQty,FauxQtyMust,FConsignPrice,FConsignAmount,")
                     .Append("FSourceTranType,FSourceInterId,FSourceEntryId,FSourceBillNo,FOrderBillNo,FOrderInterID,FOrderEntryID,")
                     .Append("FDCStockID)values(")
                     .Append("'").Append(dt.Rows[0]["公司内码ID"].ToString()).Append("',")
                     .Append("'").Append(fid).Append("',")
                     .Append("'").Append("1").Append("',")
                     .Append("'").Append(dt.Rows[0]["货名ID"].ToString()).Append("',")//货名ID
                     .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',")//申请数量
                     .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //实际数量
                     .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //单价
                     .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //金额
                     .Append("'").Append(dt.Rows[0]["单位ID"].ToString()).Append("',") //单位
                     .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',")//辅助单价
                     .Append("'").Append(dt.Rows[0]["Net"].ToString()).Append("',") //辅助实际数量
                     .Append("'").Append(dt.Rows[0]["剩余量"].ToString()).Append("',") //辅助账存数量
                     .Append("'").Append(dt.Rows[0]["Price"].ToString()).Append("',") //代销单价
                     .Append("'").Append(dt.Rows[0]["Amount"].ToString()).Append("',") //代销金额
                     .Append("'").Append(dt.Rows[0]["单据类型ID"].ToString()).Append("',") //源单类型
                     .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //源单编号
                     .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',") //原分录号
                     .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //源单单号
                     .Append("'").Append(dt.Rows[0]["FBillNo"].ToString()).Append("',") //订单单号
                     .Append("'").Append(dt.Rows[0]["FInterID"].ToString()).Append("',") //订单编号
                     .Append("'").Append(dt.Rows[0]["FEntryID"].ToString()).Append("',")//订单分录
                     .Append("'").Append(dt.Rows[0]["仓库编号"].ToString()).Append("'")//仓库编号
                     .Append(")");

//更新计划
                     StringBuilder updateTicket = new StringBuilder(" update POOrderEntry set ")
                     .Append("FCommitQty=FCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                     .Append("FAuxCommitQty=FAuxCommitQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                     .Append("FStockQty=FStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                     .Append("FAuxStockQty=FAuxStockQty+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                     .Append("FQtyInvoice=FQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("',")
                     .Append("FAuxQtyInvoice=FAuxQtyInvoice+'").Append(dt.Rows[0]["Net"].ToString()).Append("'")
                     .Append(" where fInterID='").Append(dt.Rows[0]["FInterID"].ToString()).Append("'")
                     .Append(" and FEntryID='").Append(dt.Rows[0]["FEntryID"].ToString()).Append("'");

//更新maxId
                    // string updateMaxId = "update ICMaxNum set FMaxNum=FMaxNum+1 where ftablename='ICStockBill'";

List<string> sqlList = new List<string>();
                     sqlList.Add(sqlBuider.ToString());
                     sqlList.Add(sqlBuiderEntry.ToString());
                     sqlList.Add(updateTicket.ToString());
                    // sqlList.Add(updateMaxId);

for (int index = 0; index < sqlList.Count; index++)
                     {
                         cmd.CommandText = sqlList[index];
                         cmd.ExecuteNonQuery();
                     }

tran.Commit();
                     result = "{\"result\":\"true\",\"tip\":\"修改成功\"}";
                 }
                 catch (Exception ex)
                 {
                     if (tran != null)
                     {
                         tran.Rollback();
                     }
                     result = "{\"result\":\"false\",\"tip\":\"" + ex.Message + ex.StackTrace + "\"}";
                 }
             }
         }
         else
         {
             result = "{\"result\":\"false\",\"tip\":\"解析错误!\"}";
         }
         return result;
     }

private void restartOne()
    {
        DataBaseHelper.mConnString = string.Empty;
        DataBaseHelper.getConnStr();
    }

public string getMaxId(int fbillId)
    {
        string result = string.Empty;
        using (SqlConnection conn = new SqlConnection(DataBaseHelper.mConnString))
        {
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;

//计算出主表ID
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "GetICMaxNum";

SqlParameter tablenamePara = new SqlParameter("@TableName", SqlDbType.VarChar);
                tablenamePara.Value = "ICStockBill";

SqlParameter FInterID = new SqlParameter("@FInterID", SqlDbType.Int);
                FInterID.Direction = ParameterDirection.Output;

SqlParameter incrementParam = new SqlParameter("@Increment", SqlDbType.Int);
                incrementParam.Value = 1;

SqlParameter userIdPara = new SqlParameter("@UserID", SqlDbType.VarChar);
                userIdPara.Value = fbillId;

cmd.Parameters.Add(tablenamePara);
                cmd.Parameters.Add(FInterID);
                cmd.Parameters.Add(incrementParam);
                cmd.Parameters.Add(userIdPara);

cmd.ExecuteNonQuery();
                string value = Convert.ToString( FInterID.Value);
                if (value.Length > 0)
                {
                    result = value;
                }
                
            }
            catch (Exception ex)
            {

}

return result;
        }

}
}

金蝶K3 对接(直接操作数据库)相关推荐

  1. 金蝶K3 CLOUD数据库优化

    金蝶K3 CLOUD像许多ERP系统一下,运行一段时间后,其数据库文件会不断增大.当然,随着时间的推移,数据量的增加是一方面,更多是用户操作带来的日志文件及诸多的临时表数据.数据库文件的不断增加,不仅 ...

  2. 通过sql跟踪对金蝶K3系统后台数据库执行逻辑跟踪,提取原版SQL语句

    日常进行K3相关操作需要对K3后台数据库逻辑进行监听的时候,需要启用SQL跟踪任务,通过跟踪任务可以获取实时的K3后台执行语句,进而研究其后台执行逻辑.记录一下sql跟踪的操作方法: 在任何一台可以正 ...

  3. 金蝶k3财务接口_记录用友T+接口对接的心酸历程

    前言:公司的业务主要是对接财务系统做单据传输或者凭证处理的,难免少不了和各大财务软件做数据对接,其中当然是必须通过接口来传递数据了.于是乎,用友T+的版本来了,对接的工作自然是我来做,可没想到就是这样 ...

  4. 金蝶K3发票系统与航天金税系统对接批量打印发票功能实现

    金蝶K3系统发票生成后,可以通过Excel调用K3后台发票视图,生成航天金税系统可导入的Excel格式,实现发票的批量半自动打印,以节省手工KEY单时间和出错概率. 使用工具:Excel2007:金蝶 ...

  5. k3导入账套_金蝶k3数据库存储过程 mysql数据库存储过程

    金蝶k3数据库备份时数据库文件名如何查?金? 如果扩展名是.Bak,您需要使用SQL来恢复Bak文件.完成后,使用账套管理的"登记账套"功能进行账套登记.对于你所说的可以用其他软件 ...

  6. 金蝶K3案例实验实际成本前台操作

    目录 投入产量录入 完工产量录入 在制品盘点产量录入 材料费用录入 人工费用录入 折旧费用录入 其它费用录入 材料出库核算 产成品出库核算 材料费用分配 其它费用分配 成本计算合法性检查 产品成本计算 ...

  7. 金蝶K3检验单导入导出的修改

    常规K3基础资料和供应链数据引入引出都可通过系统工具BOS数据交换平台去实现 金蝶K3登录-[系统]-[金蝶K/3客户端工具包]-[BOS平台]-[BOS数据交换平台],打开-再次系统登录-[新建任务 ...

  8. Excel+MSSQL开发金蝶K3欠料报表

    将K3所有订单需求.MRP运算.库存及在途数据等数据整体展示,适合计划部门根据报表数据统筹考量物料供给情况,特制作此报表及Excel集成工具,以减少手工汇总统计的工作量. 本代码适用于金蝶K3 WIS ...

  9. 金蝶中间层服务器 用的系统,金蝶k3中间层服务器如何设置

    金蝶k3中间层服务器如何设置 内容精选 换一换 1.什么是运维?什么是游戏运维?1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集 ...

  10. 金蝶KIS标准版与金蝶K3的区别

    一.数据库 金蝶KIS标准版使用MS Access数据库,该数据库适用于小规模的数据处理,是比较经济的数据库解决方案,但当单个表的数据记录超过5万条时,运行的速度和稳定性都将受到一定程序的影响. K3 ...

最新文章

  1. Linux 交换空间管理和技巧
  2. PubChem的Python接口PubChemPy
  3. 深入Atlas系列:Web Sevices Access in Atlas示例(6) - 在客户端隐藏服务器端类型信息...
  4. 【Javascript】之eval()
  5. static_cast函数
  6. Spring Ioc源码分析 之 Bean的加载(7):初始化
  7. view.performClick()触发点击事件
  8. html点击波,Material Design风格按钮点击波动画效果
  9. android 中开启线程的方法,android中开启的循环线程
  10. php 解包二进制,workerman的二进制怎么玩啊,怎么封包,怎么解包啊
  11. 第一篇:容易遗忘的“枚举”
  12. Vuex 实战:如何在大规模 Vue 应用中组织 Vuex 代码 | 掘金技术征文
  13. 使用Strophe连接xmpp,轻松构建web即时聊天工具
  14. 4x4矩阵键盘c语言程序,矩阵键盘C语言程序+电路图
  15. C# Message类的属性Msg所关联的消息ID
  16. 北京理工计算机科学与应用,沈蒙_北京理工大学计算机学院
  17. PHP超全基础知识点
  18. 你对锁的理解?如何手动模拟一个死锁?
  19. 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
  20. JSP鲜花商城网站系统网上花店

热门文章

  1. word中输入公式时,默认字体是Cambria Math,如何改变公式字体格式
  2. 数据预测之BP神经网络具体应用以及matlab代码
  3. BP神经网络预测(python)
  4. ubuntu第三方源导致软件无法安装的问题
  5. STM32F4 固件库下载
  6. Mac-VMware-分辨率修改
  7. 帝国cms网站URL伪静态的设置方法
  8. Moodle 安装报错处理(Linux)
  9. java门诊收费系统源码_基于java的医院门诊收费系统的设计与实现.doc
  10. 理解 GBK、Unicode、utf-8