Ordis: Import from CLAAS Parts Doc

L’applicazione VB sviluppata per CLAAS permette di importare il carrello ricambi generato dal catalogo CLAAS Parts Doc visualizzando immediatamente la scontistica per tipo ordine.La richiesta arriva a seguito dell’implementazione del nuovo dealer macedone: era necessario fornire alle officine autorizzate e ai B-dealer stessi, uno strumento che potesse aiutarli nella gestione degli ordini ricambi: dato il file .csv esportato dal catalogo ricambi ufficiale (Parts Doc) come si poteva avere un immediato feedback del costo ordine per tipologia (urgente, settimanale, stock)?

Ho ricondotto il tutto ad un grosso cerca.vert che aggancia:

codice – listino – tipo ordine – tabella sconti

A complicare le cose, la differenza di formato tra listino e catalogo del valore primario “codice parte”. Interessante….

Ho utilizzato Access, ma non appena le mie competenze in Visual Basic saranno maturate, sgancerò il tool dal software Microsoft.

ordis

Ho progettato l’interfaccia con l’obiettivo di renderla intuitiva per l’utente finale esaltandone contemporaneamente le funzionalità. Il dettaglio ordine è, per esempio, filtrabile e ordinabile per ogni campo.

A – Menu funzioni principali

  1. Importa l’offerta generata da Parts Doc
  2. Rimuove l’offerta
  3. Importa il listino prezzi
  4. Stampa l’offerta per il cliente finale

B – Visualizzazione dettaglio ordine

C – Visualizzazione scontistica. Permette inoltre di intervenire sulla visualizzazione delle colonne

Il tool fornisce poi un feedback sul file importato e su eventuali righe non valorizzate (solitamente a causa di una discrepanza tra listino e catalogo ricambi): 5, 6

È possibile poi stampare l’elenco senza i codici evitando così che clienti poco corretti lo sottopondano alla concorrenza: 7

La version history e gli accordi di licenza MIT completano il tutto.

2017-02-27_14-00-23

Il tool è attualmente in fase di beta testing.

Ho diviso il codice in 2 parti preferendo separare quella specifica per la produzione del report di stampa. Come mia abitudine è tutto commentato nel codice stesso.

Main

Private Sub cmdDelete_Click()
' ### Rimuove la Quote ###

'Disabilita i warning
DoCmd.SetWarnings False

'Svuota la Quote
DoCmd.RunSQL "DELETE * FROM Quote"

'Svuota l'etichetta "imported quote"
Me.fileNameLabel.Caption = ""
Me.systemMessage.Caption = ""

'Refresh del Preview Form
Form_submain.Requery
Form_submain.Refresh
Form_main.Refresh

'Messaggio di conferma
MsgBox "Quote has been removed", vbOKOnly + vbInformation, "Ordis"

'Riabilita i warning
DoCmd.SetWarnings True

End Sub



Private Sub cmdImport_Click()
' ### Importa il listino eliminando il precedente ###

'Disabilita i warning
DoCmd.SetWarnings False

'Svuota la Quote
DoCmd.RunSQL "DELETE * FROM PriceList"

'Importa il listino (file .txt)
Dim FileBrowse As Office.FileDialog
Dim varFile As Variant
Dim sFile As String
Set FileBrowse = Application.FileDialog(msoFileDialogFilePicker)

With FileBrowse
.AllowMultiSelect = False               'Possibile selezionare solo un file
.Title = "Select txt pricelist file"
.Filters.Clear
.Filters.Add "Text Files", "*.txt"      'Possibile visualizzare solo file txt

If .Show = True Then
sFile = .SelectedItems(1)
DoCmd.TransferText acImportDelim, "ImportPriceListSet", "PriceList", sFile, False


'Refresh del Preview Form
Form_submain.Requery
Form_submain.Refresh
Form_main.Refresh

MsgBox "Pricelist has been imported", vbOKOnly + vbInformation, "Ordis"
Else
MsgBox "Operation Cancelled", vbOKOnly + vbInformation, "Ordis"
End If

End With

'Riabilita i warning
DoCmd.SetWarnings True


'Conta le linee a prezzo 0

If DCount("*", "QQuotedPrice", "[ListPrice] is Null") > 0 Then
Me.systemMessage.Caption = "Warning: " & CStr(DCount("*", "QQuotedPrice", "[ListPrice] is Null")) & " lines with no price!"
Else
Me.systemMessage.Caption = ""

Debug.Print "sFile : " & sFile
End If

End Sub

Private Sub cmdImportQuote_Click()
' ### Importa la Quote ###

'Unset warnings
DoCmd.SetWarnings False

'SQL delete statement
DoCmd.RunSQL "DELETE * FROM Quote"

Dim FileBrowse As Office.FileDialog
Dim varFile As Variant
Dim sFile As String
Set FileBrowse = Application.FileDialog(msoFileDialogFilePicker)
With FileBrowse
.AllowMultiSelect = False ' <= True permetterebbe la selezione multipla
.Title = "Select csv file from PartsDoc"
.Filters.Clear
.Filters.Add "Text Files", "*.csv"

If .Show = True Then
sFile = .SelectedItems(1)
DoCmd.TransferText acImportDelim, "ImportQuoteSet", "Quote", sFile, False

'Refresh del Preview Form
Form_submain.Requery
Form_submain.Refresh
Form_main.Refresh

MsgBox "Quote has been imported", vbOKOnly + vbInformation, "Ordis"
Else
MsgBox "Operation Cancelled", vbOKOnly + vbInformation, "Ordis"
End If

End With

'Riabilita i warning
DoCmd.SetWarnings True

'Inserisce il nome file nella casella ID
Me.fileNameLabel.Caption = Right(sFile, Len(sFile) - InStrRev(sFile, "\"))

'Conta le linee a prezzo 0

If DCount("*", "QQuotedPrice", "[ListPrice] is Null") > 0 Then
Me.systemMessage.Caption = "Warning, " & CStr(DCount("*", "QQuotedPrice", "[ListPrice] is Null")) & " lines with no data. Check pricelist."
Else
Me.systemMessage.Caption = ""

Debug.Print "sFile : " & sFile
End If

End Sub



Private Sub Form_Close()
' ### Svuota il campo nome file e rimuove l'offerta

'Disabilita i warning
DoCmd.SetWarnings False

'Svuota la Quote
DoCmd.RunSQL "DELETE * FROM Quote"

'Riabilita i warning
DoCmd.SetWarnings True

'Svuota l'etichetta "imported quote"
Me.fileNameLabel.Caption = ""
Me.systemMessage.Caption = ""

End Sub

Private Sub License_Click()
' ### Apre la licenza ###

DoCmd.OpenForm "License"

End Sub

Private Sub Form_Load()
' ### Nasconde il ribbon al caricamento del form ###

DoCmd.ShowToolbar "Ribbon", acToolbarNo

End Sub

Private Sub checkTotalRush_Click()

If checkTotalRush.Value = True Then
Form_submain.Rush_Order.ColumnHidden = False
'    Reports!Report_RQuotedPrice!RushC.Visible = True
'Reports!Report_RQuotedPrice.Repaint

Else
Form_submain.Rush_Order.ColumnHidden = True
'Reports!Report_RQuotedPrice!RushC.Visible = False
'Reports!Report_RQuotedPrice.Repaint

End If

End Sub

Private Sub checkTotalWeekly_Click()

If checkTotalWeekly.Value = True Then
Form_submain.Weekly_Order.ColumnHidden = False
Else
Form_submain.Weekly_Order.ColumnHidden = True
End If

End Sub

Private Sub checkTotalStock_Click()

If checkTotalStock.Value = True Then
Form_submain.Stock_Order.ColumnHidden = False
Else
Form_submain.Stock_Order.ColumnHidden = True
End If

End Sub

Private Sub Version_Click()

DoCmd.OpenForm "History"

End Sub

 

Per il report

Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)

' Nasconde la colonna "Code" lasciando però l'etichetta
If Form_main.checkCode.Value = 0 Then
Me.ShortCodeC.Visible = False
'Me.etiCode.Visible = False
Else
Me.ShortCodeC.Visible = True
'Me.etiCode.Visible = True
End If

' #######  Cambio visibilità colonne #######

' Colonna Rush order
If Form_main.checkTotalRush.Value = 0 Then
Me.RushC.Visible = False
Me.etiRush.Visible = False
Else
Me.RushC.Visible = True
Me.etiRush.Visible = True
End If


'Colonna Weekly Order
If Form_main.checkTotalWeekly.Value = 0 Then
Me.WeeklyC.Visible = False
Me.etiWeekly.Visible = False
Else
Me.WeeklyC.Visible = True
Me.etiWeekly.Visible = True
End If


'Colonna Stock Order
If Form_main.checkTotalStock.Value = 0 Then
Me.StockC.Visible = False
Me.etiStock.Visible = False
Else
Me.StockC.Visible = True
Me.etiStock.Visible = True
End If


End Sub

Private Sub Report_Open(Cancel As Integer)
Intestazione.Caption = Form_main.fileNameLabel.Caption
End Sub