In de LinesEditor: read-only kolommen

0000002428     -      20-05-2022

Mercator laat ons toe om read-only kolommen weer te geven in de LinesEditor van schermen:

  • BillingForm: documenten commercieel beheer
  • TransferForm: depottransfers
  • InventoryForm: inventarissen

Deze kolommen worden gebruikt om informatie uit de artikelfiche weer te geven. Dit punt is instelbaar via de property SourceReadOnly van elke kolom in de LinesEditor.

Standaard, laat de property SourceReadOnly ons kiezen tussen volgende mogelijkheden:

  • Alle velden in de tabel STOCK
  • Alle verlden in de tabel DISPO (buiten de primary-key velden)
  • De beschikbaarheid: DISPO.DISPO-DISPO.QV_3
  • De formulering van rayon, familie, sub-familie

Wanneer deze property ingevuld is, zullen de properties Source en Formula automatisch leeg zijn.

Als de gewenste informatie niet wordt getoond in de dropdown, is het mogelijk om de SQL-functie die de informatie ophaalt handmatig in te voeren. Deze SQL-functie moet één of twee parameters van het type Char(10) kunnen ontvangen.

1 enkele parameter:: deze parameter moet corresponderen met S_ID van het artikel.

Exemple : fonction SQL renvoyant le total du disponible pour l'ensemble des dépôts 

Voorbeeld: SQL-functie die het beschikbaar totaal terugstuurt voor alle depots.

CREATE FUNCTION [dbo].[XDISPO_PERSO]
(
    @id_article char(10)
)
RETURNS float
AS
BEGIN
    declare @ret float
    select @ret=sum(DISPO-QV_3) from dispo with (NOLOCK) where (id_stock=@id_article) group by id_stock
    return isnull(@ret,0)
END
 
De property SourceReadonly moet XDISPO_PERSO bevatten
 
2 parameters: de eerste parameter moet overeenkomen met S_ID van het artikel, de tweede identificeert het depot waarvan men de informatie uit de tabel DISPO wenst.
 
Voorbeeld: SQL-functie stuurt de beschikbare fysieke stock terug, verminderd met het aantal bestellingen van klanten en verhoogd met het aantal dat reeds besteld is bij de leverancier.
 
CREATE FUNCTION [dbo].[XDISPO_PERSO]
(
    @id_article char(10), @id_depot char(10)
)
RETURNS float
AS
BEGIN
    declare @ret float
    select @ret=DISPO-QV_3+QA_3 from dispo with (NOLOCK) where (id_stock=@id_article) and (id_magasin=@id_depot)
    return isnull(@ret,0)
END
 
De property SourceReadOnly moet XDISPO_PERSO² bevatten
Let op het karakter ², zo weet Mercator dat er 2 parameters moeten meegegeven worden naar de SQL-functie.
 

Opmerkingen :

De read-only kolommen zijn niet opgenomen in de dataTable die de LinesEditor vult. Elke keer bij het afdrukken, wordt het rooster gekopieerd en worden deze kolommen en hun inhoud toegevoegd. Dit resulteert in een gegevensstructuur die wordt doorgegeven aan het afdrukmodel, dat afhankelijk is van de zichtbare read-only kolommen op het scherm. Indien nodig zal er rekening mee worden gehouden bij de ontwikkeling van de afdruksjablonen. (Let op: de zichtbare kolommen kunnen variëren, afhankelijk van het gebruikerniveau)

De kolommen waarvan de waarden depot afhankelijk zijn (DISPO,... of SQL-functie met ²) worden gewijzigd bij het veranderen van depot. Er wordt ook rekening gehouden met een depotsverandering per lijn.

Indien, men op een gegeven moment, de read-only kolommen wil verversen door code, volstaat het om de volgende method van de LinesEditor op te roepen: RefreshReadOnlyColumns().


Sinds versie 10.10.215 van MercatorUi.dll worden read-only kolommen toegevoegd aan de gegevens van het bijbehorende documentmodel, zelfs als het venster, en dus de LinesEditor, nooit is geïnstantieerd. Dit maakt deze kolommen dus beschikbaar bij het afdrukken van de laatste verkoop, bij het afdrukken per code, ...