U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

PaymentsTracing of hoe voorschotten te specificeren

0000003152     -      14-10-2024

In het commercieel beheer van Mercator kan een voorschot gekoppeld worden aan een bestelling of een levering. Via een ontvangstbewijs is het mogelijk om het voorschot van een bestelling te verhogen. Het is ook mogelijk om bij het omzetten van een bestelling in een levering de aanbetaling gedeeltelijk in mindering te brengen. Elke levering kan het eindpunt zijn van verschillende bestellingen en elke factuur kan de laatste fase zijn van verschillende leveringen. Elke levering en elke bestelling kan onderhevig zijn aan nabestellingen en dus worden opgesplitst in verschillende documenten die een verschillende toekomst hebben. Bijgevolg kan het achteraf moeilijk zijn om alle ontvangen voorschotten correct te koppelen aan de eindfactuur.

Mercator 10.10 biedt een definitieve oplossing voor dit probleem met PaymentsTracing.

Om deze functie te installeren moet deze kolom worden toegevoegd aan de PIEDS_V tabel:

alter table PIEDS_V add PAYMENTS_TRACING varchar(MAX) not null default ''

Vervolgens moet in de scherminstellingen van de gewenste bestellings-, leverings- of factuursequenties een PaymentsTracing-object worden toegevoegd.

Om prestatieredenen is het sterk aanbevolen een 2016 of latere versie van SQL Server te gebruiken. (Controleer zo nodig het compatibiliteitsniveau van de Mercator-database).

Dit object ziet er zo uit:

PaymentsTracing1

In dit voorbeeld op een factuur is een aanbetaling van 1749 euro gerechtvaardigd:

  • op 15 maart werd een voorschot van 150 euro geïnd
  • een voorschot op een andere bestelling van 199,80 euro werd geïnd op 17 maart
  • op 2 april heeft de klant het voorschot op deze twee bestellingen verhoogd met ontvangsten van respectievelijk 40 en 25 euro
  • op 3 april worden beide bestellingen in één keer geleverd en betaalt de klant het saldo van EUR 1.334,20
  • de factuur wordt later opgesteld

Het nummer na "T" komt overeen met de lade die voor het ophalen wordt gebruikt.

 

Knooppunten van niveau 2 worden afgeleid van de historiek van incasseringen (HISCAISS). In een configuratie met meerdere sites moet ervoor worden gezorgd dat deze records worden overgebracht naar de site waar dit object wordt geraadpleegd. De weergave omvat alle inkomende betalingen met betrekking tot het in het knooppunt van niveau 1 genoemde document, inclusief de wijzigingen. In dit voorbeeld is een leveringsbon met een aanbetaling gewijzigd:

PaymentsTracing2

De regels voor correctiebonnen zijn cursief gedrukt.

 

Wanneer gedeeltelijke aanbetalingsaftrek wordt toegepast, tonen de knooppunten van niveau 1 de werkelijk afgetrokken aanbetaling, terwijl de knooppunten van niveau 2 de werkelijke inkomende betalingen tonen, d.w.z. de niet-gedeeltelijke bedragen. Bij een bestelling van twee artikelen betaalt een klant bijvoorbeeld een aanbetaling van 300 euro. Bij levering wordt slechts één artikel geleverd en de verkoper besluit 150 EUR als aanbetaling aan deze levering toe te wijzen. Het object PaymentsTracing zal dit laten zien:

PaymentsTracing3


Beschikbaar stellen van xPaymentsTracing

De methode MercatorController.xFunctions.xPaymentsTracing maakt een eenvoudige exploitatie van de inhoud van PIEDS_V.PAYMENTS_TRACING mogelijk. Dit is ook beschikbaar in de Mercator Code editor.

In de editor wordt aanbevolen een Table-object te plaatsen met 5 kolommen en één rij. Deze tabel moet in zijn eigenschap TabSeparatedContent deze uitdrukking bevatten :

[xPaymentsTracing([CLI.C_LANGUE],[PIEDS_V.PAYMENTS_TRACING],[BoolTrue],[BoolTrue],[BoolTrue],[BoolTrue],[BoolTrue])]

De eerste 4 Booleaanse parameters kunnen vrij worden ingesteld:

  • BoolTrue
  • BoolFalse

In deze werkingsmodus wordt het aantal regels in de tabel automatisch aangepast aan de af te drukken gegevens.

Indien de parameter withHiscaissDetails op false is ingesteld, kan het aantal kolommen in de tabel tot 3 worden beperkt. Anders kan het aantal kolommen worden aangepast aan de hand van de opties van de booleans die inwerken op de zichtbare kolommen voor de secundaire knooppunten.


Initialisatie van het systeem

De implementatie van het systeem in een bestaand dossier zal pas overtuigende resultaten opleveren wanneer alle bestellingen en leveringen in het systeem hun weg hebben afgelegd. Het is onmogelijk achteraf de informatie die in PAYMENTS_TRACING moet staan opnieuw samen te stellen.

Het is hooguit mogelijk om PAYMENTS_TRACING aan te vullen met betrekking tot de bestellingen, door de informatie toe te voegen die is gevonden in de ontvangstbewijzen met betrekking tot deze bestellingen. Dit kan worden gedaan met behulp van dit SQL-script:

select pieds_v.id as id_recu,pieds_v.journal as journal_recu,pieds_v.piece as piece_recu,CONVERT(VARCHAR,pieds_v.date,20)+'T00:00:00' as date_recu,pieds_v.net_dv as tot_recu,pieds_v.id_dev as id_dev_recu ,t.* 
into #recutmp
from PIEDS_V cross apply dbo.PIECES_LIEES(piece_liee) t where (pieds_v.type=5) and (pieds_v.piece_liee<>'')

update PIEDS_V set payments_tracing='[{"Id":"' + rtrim(r.id_recu) + '","Journal":"' + rtrim(r.journal_recu) + '","Piece":' + ltrim(str(r.piece_recu)) + ',"Date":"' + rtrim(r.date_recu) + '","TotDv":' + ltrim(str(r.tot_recu, 15, 5)) + ',"IdDev":"' + rtrim(r.id_dev_recu) + '"}]'
from #recutmp r
where (r.journal=pieds_v.journal) and (r.piece=pieds_v.piece) and (pieds_v.type=3) and (pieds_v.payments_tracing='')

drop table #recutmp

Gebruik van de gegevens

De gegevens opgeslagen in de kolom PAYMENTS_TRACING corresponderen met de Json-weergave van een lijst uit MercatorUi.Engine.Gescom.Tools.PaymentTracingDescriptor. Een lege lijst wordt niet voorgesteld door [] maar door een lege string.

Als u deze lijst in C# wilt krijgen, kunt u deze code gebruiken:

Zoom
List<MercatorUi.Engine.Gescom.Tools.PaymentTracingDescriptor> l = MercatorUi.Engine.Gescom.Tools.PaymentTracingDescriptor.ListFromJsonString(billingEngine.PiedsVRecord.PAYMENTS_TRACING);

 

Het is mogelijk de gegevens in PIEDS_V.PAYMENTS_TRACING in SQL te verwerken.

Vanaf SQL Server versie 2016 :

declare @PAYMENTS_TRACING varchar(MAX)
select @PAYMENTS_TRACING = PAYMENTS_TRACING from PIEDS_V where ...
select * from OPENJSON(@PAYMENTS_TRACING)
WITH (
Id CHAR(10),
Journal CHAR(5),
Piece bigint,
[Date] date,
TotDv float,
IdDev char(10)
)

Voor eerdere versies (zonder prestatiegarantie) :

 

declare @PAYMENTS_TRACING varchar(MAX)
select @PAYMENTS_TRACING = PAYMENTS_TRACING from PIEDS_V where ...
select * from dbo.PARSE_PAYMENTS_TRACING(@PAYMENTS_TRACING)

Zie ook: Het PaymentTracing totaal aan de klanten historiek toevoegen