Meegaa Substrates, Den Hoorn

Facturatie via XML gekoppeld aan Exact-software

Iedere week worden de leveringen, zoals in de database van KRIS opgeslagen, per klant gegroepeerd en gefaktureerd. Uiteindelijke facturatie aan de klant loopt via EXACT software. Een scheduled task zorgt ervoor dat iedere zondag en iedere laatste dag van de maand een aprte ms-access toepassing wordt gestart en gestopt om een XML bestand met de factuurgegevens uit KRIS aan te maken. Dit bestand wordt vervolgens in EXACT ingelezen. Dit mechanisme werkt al jaren zo.

Tot nu toe (juli 2016) gebruikte MeeGaa hiervoor twee aparte ms-access .ADP programmas. Deze .ADP programmas werken niet meer met de nieuwe server (office 2016). Daarom is er een nieuw ms-acces programma gemaakt (facturatie.accde) dat beide oude ADP’s vervangt en alleen maar handmatig gestart hoeft te worden. Het programma maakt een XML bestand aan en sluit zichzelf daarna weer.

plaatje


Overgang naar office 2016

Vanaf microsoft office versie 2013 worden de Access Data Projects niet meer ondersteund. Ook MeeGaa Substrates New gebruikte voor een deel van de bedrijfsvoering een Access Data Project (*.ADP). Hierdoor waren feitelijk gedwongen hun toepassing om te laten bouwen naar een ODBC gekoppelde ms-access toepassing.
Omdat ik inmiddels ruime ervaring had met zo een conversie traject heb ik ook hun ADP omgebouwd.
 plaatje

Stukje SQL-server script om 'leveringen' op 'verwerkt' te zetten om facturatie aan te sturen.



                                                USE [Kris_test]
GO
/****** Object:  StoredProcedure [dbo].[usp_VerwerkLeveringen_all]    Script Date: 7-4-2023 12:50:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[usp_VerwerkLeveringen_all]
	-- exec [usp_VerwerkLeveringen_all]
AS

   DECLARE @AantalVerwerkt int
   DECLARE @Klant_Id int
   SET @AantalVerwerkt = 0


   SELECT GETDATE() AS DatumVerwerking
        ,Aflevering.Aflevering_Id
        ,Aflevering.afl_GeleverdDatum AS GeleverdDatum
        ,MONTH(Aflevering.afl_GeleverdDatum) AS GeleverdMaand
        ,DATEPART(ww, Aflevering.afl_GeleverdDatum) AS GeleverdWeeknr
        ,Bestelling.Klant_Id
        ,Klant.kln_Naam AS KlantNaam
        ,Bestelling.Bestelling_Id
        ,Bestelling.bst_Hoeveelheid AS BesteldHoeveeldheid
        ,Bestelling.bst_AantalBigBag  AS BesteldBigBags
        ,Bestelling.Recept_Id
        ,ISNULL(Recept.rcp_Naam, 0) AS ReceptNaam
        ,ISNULL(Recept.rcp_Prijs, 0) AS ReceptPrijs
        ,Recept.rcp_PrijsEn AS ReceptPrijsEn
        ,(Bestelling.bst_Hoeveelheid * ISNULL(Recept.rcp_Prijs, 0)) As PrijsTotaal
        ,(Bestelling.bst_Hoeveelheid * ISNULL(Recept.rcp_PrijsEn, 0)) As PrijsEnTotaal
		,ISNULL(Recept.rcp_TempPrijsAanpassing, 0) As PrijsAanpassing
		,(ISNULL(Recept.rcp_TempPrijsAanpassing, 0)  / ISNULL(Recept.rcp_EnFactor, 0)) As PrijsAanpassingEN
        ,0 AS LeveringVerwerktVersie
	     ,'Aangemaakt' AS LeveringVerwerktStatus
	     ,'KrisSystem' AS ModifiedBy
	     ,GETDATE() AS ModifiedDate
   FROM  Aflevering
   INNER JOIN Bestelling ON Bestelling.Bestelling_Id = Aflevering.Bestelling_Id
   INNER JOIN Klant ON Klant.Klant_Id = Bestelling.Klant_Id
   INNER JOIN Recept ON Recept.Recept_Id = Bestelling.Recept_Id
   WHERE (Aflevering.afl_Geleverd = 1)
    AND  (Aflevering.afl_GeleverdDatum IS NOT NULL)
    AND  NOT EXISTS (SELECT LeveringVerwerkt.Aflevering_Id FROM LeveringVerwerkt WHERE LeveringVerwerkt.Aflevering_Id = Aflevering.Aflevering_Id
                                                                                       AND LeveringVerwerkt.LeveringVerwerktVersie = 0)
																					   and (Recept.rcp_EnFactor IS NOT NULL)
   -- AND  (Bestelling.Klant_Id = @Klant_Id OR @Klant_Id IS NULL)
   ORDER BY Bestelling.bst_LeverDatum, Klant.kln_Naam, Recept.rcp_Naam