微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每个循环都在销售订单部分复制

如何解决每个循环都在销售订单部分复制

每个语句我有 2 个。一个获取订单,另一个获取订单详情。

我有 2 个订单,每个订单有 1 个订单详情。

当我从另一个应用程序获取数据并插入我的数据库时,它返回 1 个订单和 2 个订单详细信息。

所以在我的数据库中总共有 2 个订单详细信息,我有 4 个,这是重复的。

***The result I want :
My Order :
#WHFT1100
#WHFT1101

My OrderDetails :
#WHFT1101   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS
#WHFT1100   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS

But what I'm getting inserted into database Now is :

My Order :
#WHFT1100
#WHFT1101

My OrderDetails :
#WHFT1101   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS
#WHFT1100   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS
#WHFT1101   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS
#WHFT1100   0   0       1278    FG-CHIC-0007    BBQ CHICKEN 500GMS

这是我的代码(重复发生在销售订单部分):

    Dim dt As DataTable = New DataTable()
    dt.Columns.Add("RefNo",GetType(String))
    dt.Columns.Add("OrderDate",GetType(String))
    dt.Columns.Add("TotalAmt",GetType(String))
    dt.Columns.Add("Totaldisc",GetType(String))
    dt.Columns.Add("Email",GetType(String))
    dt.Columns.Add("OrderNum",GetType(String))
    dt.Columns.Add("TotalTax",GetType(Double))
    dt.Columns.Add("TotalWeight",GetType(Integer))
    dt.Columns.Add("Remarks",GetType(String))
    dt.Columns.Add("FirstName",GetType(String))
    dt.Columns.Add("LastName",GetType(String))
    dt.Columns.Add("ShipCode",GetType(String))
    dt.Columns.Add("ShipPrice",GetType(Double))
    dt.Columns.Add("SAddress",GetType(String))
    dt.Columns.Add("SName",GetType(String))
    dt.Columns.Add("STel",GetType(String))
    dt.Columns.Add("SCity",GetType(String))
    dt.Columns.Add("SPostCode",GetType(String))
    dt.Columns.Add("sstate",GetType(String))
    dt.Columns.Add("SCountry",GetType(String))

 For Each obj In st.orders
     Dim RefNo As Long = obj.id
     Dim OrderDate As String = Convert.ToDateTime(obj.created_at).ToString("yyyy-MM-dd hh:mm:ss")
     Dim TotalAmt As Double = obj.total_price
     Dim Totaldisc As Double = obj.total_discounts
     Dim Email As String = obj.email
     Dim OrderNum As String = obj.name 'Order Name
     Dim TotalTax As Double = obj.total_tax
     Dim TotalWeight As Long = obj.total_weight
     Dim Remarks As String = obj.note
     Dim FirstName As String = ""
     Dim LastName As String = ""
     Dim ShipCode As String = ""
     Dim ShipPrice As Double
     If obj.customer IsNot nothing Then
         FirstName = obj.customer.first_name
         LastName = obj.customer.last_name
     End If
     If obj.shipping_lines.Count > 0 And obj.shipping_lines IsNot nothing Then
         ShipCode = obj.shipping_lines(0).title
         ShipPrice = obj.shipping_lines(0).price
     End If
     Dim SAddress As String = ""
     Dim SName As String = ""
     Dim STel As String = ""
     Dim SCity As String = ""
     Dim SPostCode As String = ""
     Dim sstate As String = ""
     Dim SCountry As String = ""
     If obj.shipping_address IsNot nothing Then
         SAddress = obj.shipping_address.address1
         SName = obj.shipping_address.first_name
         STel = obj.shipping_address.phone
         SCity = obj.shipping_address.city
         SPostCode = obj.shipping_address.zip
         sstate = obj.shipping_address.province
         SCountry = obj.shipping_address.country
     End If
     dt.Rows.Add(RefNo,OrderDate,TotalAmt,Totaldisc,Email,OrderNum,TotalTax,TotalWeight,Remarks,FirstName,LastName,ShipCode,ShipPrice,SAddress,SName,STel,SCity,SPostCode,sstate,SCountry)
 Next
 'datatable2 to insert record for list of products details from line_items
 Dim dt2 As DataTable = New DataTable()
 dt2.Columns.Add("RefNo",GetType(String))
 dt2.Columns.Add("LineID",GetType(String))
 dt2.Columns.Add("Title",GetType(String))
 dt2.Columns.Add("ProductID",GetType(String))
 dt2.Columns.Add("Quantity",GetType(Integer))
 dt2.Columns.Add("Grams",GetType(Double))
 dt2.Columns.Add("Price",GetType(Double))
 dt2.Columns.Add("SKU",GetType(String))
 For Each obj In st.orders
     For Each lineitems In obj.line_items
         Dim RefNo As Long = obj.id
         Dim LineID As Long
         Dim Title As String = ""
         Dim ProductID As Long
         Dim Quantity As Integer
         Dim Grams As Double
         Dim Price As Double
         Dim SKU As String = ""
         If obj.line_items IsNot nothing Then
             LineID = lineitems.id
             Title = lineitems.title
             ProductID = lineitems.product_id
             Quantity = lineitems.quantity
             Grams = lineitems.grams
             Price = lineitems.price
             SKU = lineitems.sku
         End If
         dt2.Rows.Add(RefNo,LineID,Title,ProductID,Quantity,Grams,Price,SKU)
     Next
 Next
 'POST SALES ORDER TO EMAC
 Dim SOID1 As Integer
 Dim OrderDate1 As Date
 Dim UpdatedDate As Date
 Dim OrderNum1 As String = ""
 Dim SOCustCode As String = "300-ONLINE"
 'Post Sales Order to allocated shops db to save in tblSalesOrder and SalesOrderDetail
    
 For Each row As DaTarow In dt.Rows
     'Get db connection for each branch
     Dim mDbsName As String = "WH_PCH"
     'check if the sales order number already exist in emac (if exist exit)
     Dim dataConn2 As sqlConnection = DBConnectionHelper.GetDataConn(mDbsName)
     Dim CountRefNo As Integer
     dataConn2.open()
     Dim tsql2 As String = "SELECT Count(RefNo) From tblSalesOrder where RefNo =@RefNo"
     Using command As sqlCommand = New sqlCommand(tsql2,dataConn2)
         command.Parameters.AddWithValue("@RefNo",row("OrderNum"))
         CountRefNo = command.ExecuteScalar
         'If record not exist then insert into tblSIOrder
         If CountRefNo = 0 Then
             Dim dataConn As sqlConnection = DBConnectionHelper.GetDataConn(mDbsName)
             Dim ComBranchID As Integer = 1
             dataConn.open()
             'Insert Statement
             Using transaction As sqlTransaction = dataConn.BeginTransaction
                 Try
                     'Sales Order
                     Dim sqlStr As String = "EXEC USP_InsertSalesOrder @SOID,@RefNo,@SODate
                     Dim sqlCmd As sqlCommand = New sqlCommand(sqlStr,dataConn,transaction)
                     sqlCmd.Parameters.Clear()
                     sqlCmd.Parameters.Add(New sqlParameter("@SOID","0"))
                     sqlCmd.Parameters.Add(New sqlParameter("@RefNo",row("OrderNum")))
                     sqlCmd.Parameters.Add(New sqlParameter("@SODate",row("OrderDate")))
                        
                     OrderDate1 = row("OrderDate")
                     UpdatedDate = row("OrderDate")
                     OrderNum1 = row("OrderNum")
                     ' Execute
                     Dim sqlDR As sqlDataReader = sqlCmd.ExecuteReader()
                     If sqlDR.Read() Then
                         SOID1 = sqlDR(0)
                     End If
                     sqlDR.Close()
                     sqlCmd.dispose()
                     transaction.Commit()
                     'Sales Order Part
                     For Each row2 As DaTarow In dt2.Rows
                         Using transaction2 As sqlTransaction = dataConn.BeginTransaction
                             Try
                                    
                                 'sql
                                 Dim sql2 As String = "EXEC USP_InsertSalesOrderPart @SOPID,@SOID,@SORefNo
                                 Dim cmd2 As sqlCommand
                                 cmd2 = New sqlCommand(sql2,dataConn) With {.Transaction = transaction2}
                                 cmd2.Parameters.Clear()
                                 cmd2.Parameters.Add(New sqlParameter("@SOPID",0))
                                 cmd2.Parameters.Add(New sqlParameter("@SOID",SOID1))
                                 cmd2.Parameters.Add(New sqlParameter("@SORefNo",OrderNum1))
                                 ' Execute
                                 Dim sqlDR1 As sqlDataReader = cmd2.ExecuteReader()
                                 sqlDR1.Close()
                                 cmd2.dispose()
                                 transaction2.Commit()
                             Catch ex As Exception
                                 transaction2.Rollback()
                                 dataConn.Close()
                                 Exit Sub
                             End Try
                         End Using
                     Next
                 Catch ex As Exception
                     transaction.Rollback()
                     dataConn.Close()
                     Exit Sub
                 End Try
             End Using
             dataConn.Close()
         End If
     End Using
     dataConn2.Close()
 Next

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。