Inkoopregels samenvoegen in 1 inkooporder

Status
Niet open voor verdere reacties.

FrankinZwolle

Gebruiker
Lid geworden
29 sep 2014
Berichten
41
Ik heb voor een Hospice in Oeganda (Liefde werk - oud papier) een Noordwind database 2013 verbouwd. Aan deze database heb ik verschillende functies en tabellen toegevoegd om het beheer van patiënten en ziektes goed te kunnen uitvoeren. Ik beperk met tot de opmaak en een collega past functies aan. Nu is deze collega niet meer beschikbaar dus zit ik even met de handen in het haar met het volgende:

Voor het beheer van de voorraad zijn we al aan het verbouwen gegaan. In de bijlage de database waarin na openen een hoofdmenu getoond wordt. Via de knop [Stock] wordt een apart scherm geopend. Naast de huidige voorraad heb je daar ook de gewenste voorraad. Tevens wordt berekend hoeveel je zou moeten bijkopen om aan het gewenste voorraad aantal te komen. Als je dan op de knop [Purchase] klikt wordt het gewenste aantal bij de eerste voorkeur leverancier ingekocht. Van het artikel wordt dus, in een nieuwe inkooporder, een nieuwe inkoopregel aangelegd. Klik je op een volgend artikel op [Purchase], dan kan de inkoop voor dezelfde leverancier gemaakt worden maar dan wordt het weer een nieuwe inkooporder.

En hier zit mijn uitdaging die ik graag aan jullie voorleg. Hoe krijg ik het voor elkaar om nieuwe inkoopregels voor dezelfde leverancier in een en dezelfde inkooporder te krijgen. Waarbij de restrictie geldt op de status van de inkooporder. Indien de status 'Submitted' is dan toevoegen, zodra de status 'Approved' is dan niet meer toevoegen maar een nieuwe inkoop aanleggen. De knop [Purchase] roept een VB-script aan maar daarna ben ik de weg kwijt.

Wie kan mij helpen>

Download link van de database: https://www.wetransfer.com/download...ff5cd0a807512314c846dc9620140929165623/ab2d02
 
Laatst bewerkt:
Wil je een tip? Dit is zo'n gruwelijk ingewikkeld bouwwerk, dat je daar beter iemand voor kunt inhuren (in dit geval waarschijnlijk vragen of hij/zij je wil matsen) want dit gaat nogal wat tijd kosten. Zelf zou ik het ook nooit zo moeilijk hebben gebouwd. Simpel een formulier Purchase Order openen met een subformulier Order Details, en je kunt doen wat je wilt. Ik hoop voor je dat je iemand kunt vinden die er tijd voor heeft, want ik heb die niet.
 
FrankInZwolle,

Ik moet zeggen je hebt een uitstekend programma, zit mooi in elkaar gemaakt door een echte specialist, prachtig.
Maar het maakt het wel lastig om er veranderingen in aan te brengen, juist omdat het gebruik maakt van een enorme groep
procedures en functies.

Maar goed, de oplossing was eigenlijk simpeler dan ik had gedacht.

In de Module "Inventory" staat een Functie genaamd "RestockProduct" deze heeft een kleine aanpassing nodig om het
door jou gevraagde effect te creëren.

Neem hiervoor de volgende functie over, je zult zien dat er eigenlijk maar een regel veranderd, maar dat is voldoende.

Code:
Function RestockProduct(ProductID As Long) As Boolean
    Dim SupplierID As Long
    Dim QtyToOrder As Long
    Dim PurchaseOrderID As Long
    Dim UnitCost As Long
    
    QtyToOrder = GetQtyToReorder(ProductID)
    
    If QtyToOrder > 0 Then
        
        SupplierID = FindProductSupplier(ProductID)
    
        If SupplierID > 0 Then
            ' Determen if supplier has open purchaseorder if Null then create new purchase order
            If IsNull(DLookup("[Purchase Order ID]", "Purchase Orders", _
                "[Supplier ID]=" & SupplierID & " AND [Status ID] < 2 ")) Then
            
                If Not PurchaseOrders.Create(SupplierID, GetCurrentUserID(), -1, PurchaseOrderID) Then
                    Exit Function
                End If
            Else 
                PurchaseOrderID = DLookup("[Purchase Order ID]", "Purchase Orders", _
                    "[Supplier ID]=" & SupplierID & " AND [Status ID] < 2 ")
            End If
            
            ' Set unit cost to standard cost for product
            UnitCost = GetStandardCost(Nz(ProductID, 0))
            
            ' Add product line item to Purchase Order
            If Not PurchaseOrders.CreateLineItem(PurchaseOrderID, ProductID, UnitCost, QtyToOrder) Then
                Exit Function
            End If

        Else
            ' Suggested Enhancement: Handle case where product does not have a supplier
        End If
        
    End If

    RestockProduct = True
End Function

Veel Succes.
 
Laatst bewerkt:
Ik moet zeggen je hebt een uitstekend programma, zit mooi in elkaar gemaakt door een echte specialist, prachtig.
De bloemen gaan naar Microsoft, want het is grotendeels een standaard sjabloon van 2013. Maar het ziet er inderdaad netjes uit. En zoals je al zegt: het is behoorlijk gecompliceerd gebouwd, maar dat kennen we nu eenmaal van de Microsoft jongens :)
 
Blij!!

Octafish: je hebt helemaal gelijk dat de meeste credits naar de goed betaalde mannen en vrouwen van Microsoft gaan. Zij hebben de basis gemaakt waarmee ik slechts mee aan het hobbyen ben gegaan.
Elsendoorn2134: hartstikke bedankt voor de gegeven oplossing. Ik heb het toegepast en getest en het werkt precies zoals ik het in mijn hoofd had. TOP:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan