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.
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.
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