📄 frmsalesorderae.frm
字号:
Dim c As Integer
On Error GoTo erR
CN.BeginTrans
'Save the record
With rs
If State = adStateAddMode Or State = adStatePopupMode Then
.AddNew
![SalesOrderID] = PK
![DateAdded] = Now
![AddedByFK] = CurrUser.USER_PK
Else
![DateModified] = Now
![LastUserFK] = CurrUser.USER_PK
End If
![ClientID] = nsdClient.BoundText
![SONo] = txtSONo.Text
![Date] = dtpDate.Value
![Salesman] = txtSalesman.Text
![OrderedBy] = txtOrderedBy.Text
![DispatchedBy] = txtDispatchedBy.Text
![DeliveryInstructions] = txtDeliveryInstructions.Text
![Gross] = toNumber(txtGross(2).Text)
![Discount] = txtDesc.Text
![TaxBase] = toNumber(txtTaxBase.Text)
![Vat] = toNumber(txtVat.Text)
![NetAmount] = toNumber(txtNet.Text)
![Remarks] = txtRemarks.Text
.Update
End With
With Grid
'Save the details of the records
For c = 1 To cIRowCount
.Row = c
If State = adStateAddMode Or State = adStatePopupMode Then
'Add qty received in Local Purchase Details
RSDetails.AddNew
RSDetails![SalesOrderID] = PK
RSDetails![StockID] = toNumber(.TextMatrix(c, 9))
RSDetails![Qty] = toNumber(.TextMatrix(c, 3))
RSDetails![unit] = getUnitID(.TextMatrix(c, 4))
RSDetails![Price] = toNumber(.TextMatrix(c, 5))
RSDetails![Discount] = toNumber(.TextMatrix(c, 7)) / 100
RSDetails.Update
End If
Next c
End With
'Clear variables
c = 0
Set RSDetails = Nothing
CN.CommitTrans
HaveAction = True
Screen.MousePointer = vbDefault
If State = adStateAddMode Then
MsgBox "New record has been successfully saved.", vbInformation
If MsgBox("Do you want to add another new record?", vbQuestion + vbYesNo) = vbYes Then
ResetFields
GeneratePK
txtSONo.Text = Format(PK, "0000000000")
Else
Unload Me
End If
Else
MsgBox "Changes in record has been successfully saved.", vbInformation
Unload Me
End If
Exit Sub
erR:
CN.RollbackTrans
prompt_err erR, Name, "cmdSave_Click"
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdUsrHistory_Click()
On Error Resume Next
Dim tDate1 As String
Dim tUser1 As String
tDate1 = Format$(rs.Fields("DateAdded"), "MMM-dd-yyyy HH:MM AMPM")
tUser1 = getValueAt("SELECT PK,CompleteName FROM tbl_SM_Users WHERE PK = " & rs.Fields("AddedByFK"), "CompleteName")
MsgBox "Date Added: " & tDate1 & vbCrLf & _
"Added By: " & tUser1 & vbCrLf & _
"" & vbCrLf & _
"Last Modified: n/a" & vbCrLf & _
"Modified By: n/a", vbInformation, "Modification History"
tDate1 = vbNullString
tUser1 = vbNullString
End Sub
Private Sub Form_Activate()
On Error Resume Next
If CloseMe = True Then
Unload Me
Else
nsdClient.SetFocus
End If
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys ("{tab}")
End Sub
Private Sub Form_Load()
InitGrid
bind_dc "SELECT * FROM Unit", "Unit", dcUnit, "UnitID", True
'Check the form state
If State = adStateAddMode Or State = adStatePopupMode Then
InitNSD
'Set the recordset
rs.Open "SELECT * FROM Sales_Order WHERE SalesOrderID=" & PK, CN, adOpenStatic, adLockOptimistic
dtpDate.Value = Date
Caption = "Create New Entry"
cmdUsrHistory.Enabled = False
GeneratePK
txtSONo.Text = Format(PK, "0000000000")
Else
Screen.MousePointer = vbHourglass
'Set the recordset
rs.Open "SELECT * FROM qry_Sales_Order WHERE SalesOrderID=" & PK, CN, adOpenStatic, adLockOptimistic
cmdCancel.Caption = "Close"
cmdUsrHistory.Enabled = True
DisplayForViewing
If ForCusAcc = True Then
Me.Icon = frmSalesOrder.Icon
End If
Screen.MousePointer = vbDefault
End If
'Initialize Graphics
With MAIN
'cmdGenerate.Picture = .i16x16.ListImages(14).Picture
'cmdNew.Picture = .i16x16.ListImages(10).Picture
'cmdReset.Picture = .i16x16.ListImages(15).Picture
End With
End Sub
'Procedure used to generate PK
Private Sub GeneratePK()
PK = getIndex("Sales_Order")
End Sub
'Procedure used to initialize the grid
Private Sub InitGrid()
cIRowCount = 0
With Grid
.Clear
.ClearStructure
.Rows = 2
.FixedRows = 1
.FixedCols = 1
.Cols = 10
.ColSel = 9
'Initialize the column size
.ColWidth(0) = 315
.ColWidth(1) = 2025
.ColWidth(2) = 2505
.ColWidth(3) = 1545
.ColWidth(4) = 900
.ColWidth(5) = 900
.ColWidth(6) = 900
.ColWidth(7) = 900
.ColWidth(8) = 900
.ColWidth(9) = 0
'Initialize the column name
.TextMatrix(0, 0) = ""
.TextMatrix(0, 1) = "Barcode"
.TextMatrix(0, 2) = "Description"
.TextMatrix(0, 3) = "Unit Qty"
.TextMatrix(0, 4) = "Unit"
.TextMatrix(0, 5) = "Sales Price"
.TextMatrix(0, 6) = "Gross"
.TextMatrix(0, 7) = "Discount(%)"
.TextMatrix(0, 8) = "Net Amount"
.TextMatrix(0, 9) = "Stock ID"
'Set the column alignment
.ColAlignment(0) = vbLeftJustify
.ColAlignment(1) = vbLeftJustify
.ColAlignment(2) = vbLeftJustify
.ColAlignment(3) = vbLeftJustify
.ColAlignment(4) = vbRightJustify
.ColAlignment(5) = vbLeftJustify
.ColAlignment(6) = vbRightJustify
.ColAlignment(7) = vbRightJustify
.ColAlignment(8) = vbRightJustify
End With
End Sub
Private Sub ResetEntry()
nsdStock.ResetValue
txtUnitPrice.Tag = 0
txtUnitPrice.Text = "0.00"
txtQty.Text = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
If HaveAction = True Then
frmSalesOrder.RefreshRecords
End If
Set frmSalesOrderAE = Nothing
End Sub
Private Sub Grid_Click()
If State = adStateEditMode Then Exit Sub
If Grid.Rows = 2 And Grid.TextMatrix(1, 9) = "" Then
btnRemove.Visible = False
Else
btnRemove.Visible = True
btnRemove.Top = (Grid.CellTop + Grid.Top) - 20
btnRemove.Left = Grid.Left + 50
End If
End Sub
Private Sub Grid_Scroll()
btnRemove.Visible = False
End Sub
Private Sub Grid_SelChange()
Grid_Click
End Sub
Private Sub nsdStock_Change()
txtQty.Text = "0"
'txtUnitPrice.Tag = nsdStock.getSelValueAt(3) 'Unit Cost
txtUnitPrice.Text = toMoney(nsdStock.getSelValueAt(3)) 'Selling Price
End Sub
Private Sub txtDate_GotFocus()
HLText txtDate
End Sub
Private Sub txtDesc_GotFocus()
HLText txtDesc
End Sub
Private Sub txtQty_Validate(Cancel As Boolean)
txtQty.Text = toNumber(txtQty.Text)
End Sub
Private Sub txtUnitPrice_Change()
txtQty_Change
End Sub
Private Sub txtUnitPrice_Validate(Cancel As Boolean)
txtUnitPrice.Text = toMoney(toNumber(txtUnitPrice.Text))
End Sub
Private Sub txtQty_Change()
If toNumber(txtQty.Text) < 1 Then
btnAdd.Enabled = False
Else
btnAdd.Enabled = True
End If
txtGross(1).Text = toMoney((toNumber(txtQty.Text) * toNumber(txtUnitPrice.Text)))
txtNetAmount.Text = toMoney((toNumber(txtQty.Text) * toNumber(txtUnitPrice.Text)) - ((toNumber(txtDisc.Text) / 100) * toNumber(toNumber(txtQty.Text) * toNumber(txtUnitPrice.Text))))
'If toNumber(txtQty.Text) < 1 Then txtNetPrice.Text = 0: Exit Sub
'txtNetPrice.Text = toMoney(toNumber(txtUnitPrice.Text)) - ((toNumber(txtUnitPrice.Text) * (toNumber(txtdisc.Text) / 100)))
End Sub
Private Sub txtQty_GotFocus()
HLText txtQty
End Sub
Private Sub txtUnitPrice_KeyPress(KeyAscii As Integer)
KeyAscii = isNumber(KeyAscii)
End Sub
'Procedure used to reset fields
Private Sub ResetFields()
InitGrid
ResetEntry
nsdClient.Text = ""
txtSONo.Text = ""
txtAddress.Text = ""
txtDate.Text = ""
txtSalesman.Text = ""
txtOrderedBy.Text = ""
txtDispatchedBy.Text = ""
txtDeliveryInstructions.Text = ""
txtGross(2).Text = "0.00"
txtDesc.Text = "0.00"
txtTaxBase.Text = "0.00"
txtVat.Text = "0.00"
txtNet.Text = "0.00"
cIAmount = 0
cDAmount = 0
nsdClient.SetFocus
End Sub
'Used to display record
Private Sub DisplayForViewing()
On Error GoTo erR
nsdClient.DisableDropdown = True
nsdClient.TextReadOnly = True
nsdClient.Text = rs!Company
txtSONo.Text = rs!SONo
txtAddress.Text = rs!Address
txtDate.Text = rs![Date]
txtSalesman.Text = rs![Salesman]
txtOrderedBy.Text = rs![OrderedBy]
txtDispatchedBy.Text = rs![DispatchedBy]
txtDeliveryInstructions.Text = rs![DeliveryInstructions]
txtGross(2).Text = toMoney(toNumber(rs![Gross]))
txtDesc.Text = toMoney(toNumber(rs![Discount]))
txtTaxBase.Text = toMoney(rs![TaxBase])
txtVat.Text = toMoney(rs![Vat])
txtNet.Text = toMoney(rs![NetAmount])
txtRemarks.Text = rs![Remarks]
'Display the details
Dim RSDetails As New Recordset
RSDetails.CursorLocation = adUseClient
RSDetails.Open "SELECT * FROM qry_Sales_Order_Detail WHERE SalesOrderID=" & PK & " ORDER BY Stock ASC", CN, adOpenStatic, adLockOptimistic
If RSDetails.RecordCount > 0 Then
RSDetails.MoveFirst
While Not RSDetails.EOF
With Grid
If .Rows = 2 And .TextMatrix(1, 9) = "" Then
.TextMatrix(1, 1) = RSDetails![Barcode]
.TextMatrix(1, 2) = RSDetails![Stock]
.TextMatrix(1, 3) = RSDetails![Qty]
.TextMatrix(1, 4) = RSDetails![unit]
.TextMatrix(1, 5) = toMoney(RSDetails![Price])
.TextMatrix(1, 6) = toMoney(RSDetails![Gross])
.TextMatrix(1, 7) = RSDetails![Discount] * 100
.TextMatrix(1, 8) = toMoney(RSDetails![NetAmount])
.TextMatrix(1, 9) = RSDetails![StockID]
Else
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 1) = RSDetails![Barcode]
.TextMatrix(.Rows - 1, 2) = RSDetails![Stock]
.TextMatrix(.Rows - 1, 3) = RSDetails![Qty]
.TextMatrix(.Rows - 1, 4) = RSDetails![unit]
.TextMatrix(.Rows - 1, 5) = RSDetails![Price]
.TextMatrix(.Rows - 1, 6) = RSDetails![Gross]
.TextMatrix(.Rows - 1, 7) = RSDetails![Discount] * 100
.TextMatrix(.Rows - 1, 8) = toMoney(RSDetails![NetAmount])
.TextMatrix(.Rows - 1, 9) = RSDetails![StockID]
End If
End With
RSDetails.MoveNext
Wend
Grid.Row = 1
Grid.ColSel = 9
'Set fixed cols
If State = adStateEditMode Then
Grid.FixedRows = Grid.Row: Grid.SelectionMode = flexSelectionFree
Grid.FixedCols = 2
End If
End If
RSDetails.Close
'Clear variables
Set RSDetails = Nothing
'Disable commands
LockInput Me, True
dtpDate.Visible = False
txtDate.Visible = True
picPurchase.Visible = False
cmdSave.Visible = False
btnAdd.Visible = False
CmdReceiveItem.Left = cmdSave.Left
CmdReceiveItem.Visible = True
'Resize and reposition the controls
Shape3.Top = 2500
Label11.Top = 2500
Line1(1).Visible = False
Line2(1).Visible = False
Grid.Top = 2800
Grid.Height = 3680
Exit Sub
erR:
'Error if encounter a null value
If erR.Number = 94 Then
Resume Next
Else
MsgBox erR.Description
End If
End Sub
Private Sub InitNSD()
'For Client
With nsdClient
.ClearColumn
.AddColumn "Client ID", 1794.89
.AddColumn "Company", 2264.88
.AddColumn "Address", 2670.23
.Connection = CN.ConnectionString
.sqlFields = "ClientID, Company, Address"
.sqlTables = "Clients"
.sqlSortOrder = "Company ASC"
.BoundField = "ClientID"
.PageBy = 25
.DisplayCol = 2
.setDropWindowSize 7000, 4000
.TextReadOnly = True
.SetDropDownTitle = "Clients Record"
End With
'For Stock
With nsdStock
.ClearColumn
.AddColumn "Barcode", 2064.882
.AddColumn "Stock", 4085.26
.AddColumn "Cost", 1500
.AddColumn "Sales Price", 1500
.AddColumn "ICode", 1500
.Connection = CN.ConnectionString
.sqlFields = "Barcode,Stock,Cost,SalesPrice,ICode,StockID"
.sqlTables = "Stocks"
.sqlSortOrder = "Stock ASC"
.BoundField = "StockID"
.PageBy = 25
.DisplayCol = 2
.setDropWindowSize 6800, 4000
.TextReadOnly = True
.SetDropDownTitle = "Stocks"
End With
End Sub
Private Sub txtUnitPrice_GotFocus()
HLText txtUnitPrice
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -