Basis map

  • 7 minutes to read

Binnnen BoCount Dynamics maken we gebruik van een 'basismap' (zie BoCount Dynamics Instellingen). Deze map wordt gebruikt voor het opslaan van allerhande bestanden (documentafbeelding,codabox,drag&drop,pdf,...). Voor elke soort opslag wordt een aparte subfolder gemaakt binnen de root folder. Voor elke subfolder is het mogelijk een aparte bestandsopslag in te stellen.

Codeunits

CFL Root Folder Management

Functies voor bepalen van de root folder en subfolder voor opslag van bestanden. Uitbreiden van deze folder structuur is mogelijk door het uitbreiden van de enum "CFL Root Sub Folder Type" en het implmenteren van de interface "CFLRootSubFolder in nieuwe codeunits voor de nieuwe enum values.

TIP

In principe is enkel deze codeunit nodig om met eender welke bestandsoplsag te werken, en bestanden uit te wisselen.
Een uitgewerkt voorbeeld hiervan kan je vinden in de Adventure Bike extensie onder Custom File Interface .
Je kan deze extensie terugvinden op Github.

TIP

Onderliggend maakt de codeunit CFL Root Folder Management gebruik van specifieke codeunits voor elk type bestandsopslag: Azure Blob Storage BoCount Dynamics Service SharePoint Azure File Storage

procedure CFLGetRootSubFolder

procedure CFLGetRootSubFolder(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"): text

Retourneert de subfolder/container voor een gegeven "cfl root sub folder type"

event CFLOnAfterGetRootSubFolder

local procedure CFLOnAfterGetRootSubFolder(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var txtFolder: text)

Dit event wordt gebruikt door System OnPrem om de folder terug te geven in geval van lokale bestandsopslag.

procedure CFLGetRootFolder()

procedure CFLGetRootFolder(): Text[250]

Retourneert de root folder van BoCount. Dit kan zowel een folder op lokale opslag zijn als een azure blob storge url.

event CFLOnAfterGetRootFolder

local procedure CFLOnAfterGetRootFolder(var txtFolder: text)

Dit event wordt gebruikt door System OnPrem om de rootfolder terug te geven in geval van lokale bestandsopslag.

procedure CFLGetRootFolderWithoutCompanyCode()

procedure CFLGetRootFolderWithoutCompanyCode(): Text[250]

Retourneert de root folder van BoCount. Dit kan zowel een folder op lokale opslag zijn als een azure blob storge url.

event CFLOnAfterGetRootFolderWithoutCompanyCode

local procedure CFLOnAfterGetRootFolderWithoutCompanyCode(var txtFolder: text)

Dit event wordt gebruikt door System OnPrem om de rootfolder zonder de bedrijfscode terug te geven in geval van lokale bestandsopslag.

procedure CFLGetTypeFromRecordID

procedure CFLGetTypeFromRecordID(recID: recordid) Type: enum "CFL Root Sub Folder Type"

Retourneert enum-waarde voor "CFL Root Sub Folder Type" voor een opgeven record-id.

event OnAfterGetTypeFromRecordID

[EventSubscriber(ObjectType::Codeunit, Codeunit::"CFL Root Folder Management",'OnAfterGetTypeFromRecordID', '', false, false)]
local procedure OnAfterGetTypeFromRecordID(recID: recordID; var Type: enum "CFL Root Sub Folder Type")
begin
end

procedure CFLGetFiles

procedure CFLGetFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Gebruik deze functie om de bestanden in een bepaalde subfolder terug te krijgen. De bestanden worden opgelijst in de record "CFL Files".
Het is hierbij niet nodig om te weten met welk soort van opslag er wordt gewerkt. Via events grijpt System OnPrem hier in om ingeval van lokale opslag de bestanden terug te geven.

event CFLOnAfterGetFiles

local procedure CFLOnAfterGetFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Dit event wordt gebruikt door System OnPrem om de bestanden terug te geven in geval van lokale bestandsopslag.

procedure CFLPutFiles

procedure CFLPutFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Gebruik deze functie om de bestanden in een bepaalde subfolder op te slaan. De bestanden worden doorgegeven via de record "CFL Files".
Het is hierbij niet nodig om te weten met welk soort van opslag er wordt gewerkt. Via events grijpt System OnPrem hier in om ingeval van lokale opslag de bestanden op te slaan.

event CFLOnAfterPutFiles

local procedure CFLOnAfterPutFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Dit event wordt gebruikt door System OnPrem om de bestanden op te slaan in geval van lokale bestandsopslag.

procedure CFLDeleteFiles

procedure CFLDeleteFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Gebruik deze functie om de bestanden in een bepaalde subfolder te verwijderen. De bestanden worden doorgegeven via de record "CFL Files".
Het is hierbij niet nodig om te weten met welk soort van opslag er wordt gewerkt. Via events grijpt System OnPrem hier in om ingeval van lokale opslag de bestanden te verwijderen.

event CFLOnAfterDeleteFiles

local procedure CFLOnAfterDeleteFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Dit event wordt gebruikt door System OnPrem om de bestanden te verwijderen in geval van lokale bestandsopslag.

procedure CFLGetFile

procedure CFLGetFile(CFLRootSubFolderType: enum "CFL Root Sub Folder Type";FileName: text; var CFLFiles: record "CFL Files")

Gebruik deze functie om één bestand in een bepaalde subfolder terug te krijgen. Het bestand wordt geretourneerd via de record "CFL Files".
Het is hierbij niet nodig om te weten met welk soort van opslag er wordt gewerkt. Via events grijpt System OnPrem hier in om ingeval van lokale opslag het bestad terug te geven.

event CFLOnAfterGetFile

local procedure CFLOnAfterGetFile(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLFiles: record "CFL Files")

Dit event wordt gebruikt door System OnPrem om het bestand terug te geven in geval van lokale bestandsopslag.

procedure CFLGetNoOfFiles

procedure CFLGetNoOfFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var NoOfFiles: integer)

Gebruik deze functie om het aantal bestanden in een bepaalde subfolder terug te krijgen.
Het is hierbij niet nodig om te weten met welk soort van opslag er wordt gewerkt. Via events grijpt System OnPrem hier in om ingeval van lokale opslag het aantal bestanden in de map terug te geven.

event CFLOnAfterCFLGetNoOfFiles

local procedure CFLOnAfterCFLGetNoOfFiles(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var NoOfFiles: integer)

Dit event wordt gebruikt door System OnPrem om het aantal bestanden terug te geven in geval van lokale bestandsopslag.

procedure CFLMoveFile

procedure CFLMoveFile(FromRootSubFolderType: enum "CFL Root Sub Folder Type"; FromFileName: text; ToRootSubFolderType: enum "CFL Root Sub Folder Type"; ToFileName: text; Remove: boolean)

Gebruik deze procedure om een bestand te verplaatsen van map.
Met de Remove optie wordt het bestand in de oorspronkelijke map verwijderd.

procedure CFLGetFileList

procedure CFLGetFileList(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLDragDopFiles: record "CFL Drag and Drop File"; Recurse: boolean; Subfolder: text; Level: integer)

Gebruik deze procedure om de bestanden aanwezig in een folder op te lijsten.
Met de recurse parameter kan aangegeven worden of inhoud van submappen ook dient opgelijst te worden.

event CFLOnAfterGetFileList

local procedure CFLOnAfterGetFileList(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLDragDopFiles: record "CFL Drag and Drop File"; Recurse: boolean; Subfolder: text)
begin
end;

BoCount System OnPrem gebruikt dit event om de bestanden op te lijsten in geval van bestandopslag Lokale map.

procedure CFLGetFolderList

procedure CFLGetFolderList(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLDragDopFiles: record "CFL Drag and Drop File"; Recurse: boolean; Subfolder: text; Level: integer)

Gebruik deze procedure om de submappen aanwezig in een folder op te lijsten.
Met de recurse parameter kan aangegeven worden of inhoud van submappen ook dient opgelijst te worden.

event CFLOnAfterGetFolderList

local procedure CFLOnAfterGetFolderList(CFLRootSubFolderType: enum "CFL Root Sub Folder Type"; var CFLDragDopFiles: record "CFL Drag and Drop File"; Recurse: boolean; Subfolder: text)
begin
end;

BoCount System OnPrem gebruikt dit event om de mappen op te lijsten in geval van bestandopslag Lokale map.

CFL SubFolder None

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL None".

CFL SubFolder Sales

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Sales".

CFL SubFolder Purchases

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Purchases".

CFL SubFolder PdfToolsErp

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL PdfToolsErp".

CFL SubFolder PdfTools

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL PdfTools".

CFL SubFolder PdfToolsMgt

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL PdfToolsMgt".

CFL SubFolder Letters

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Letters".

CFL SubFolder Codabox

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Codabox".

CFL SubFolder DragDrop

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL DragDrop".

CFL SubFolder Mails

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Mails".

CFL SubFolder Service

Implementatie van de interface "CFLRootSubFolder" voor enum value "CFL Service".

Tabbles

CFL Files

CFLAdd

procedure CFLAdd(var tempBlob: codeunit "Temp Blob"; FileName: text)

Gebruik deze functie om een bestand toe te voegen aan de tabel.

CFLAdd

procedure CFLAdd(var IStream: InStream; FileName: text)

Gebruik deze functie om een bestand toe te voegen aan de tabel.

CFLFilesToTempBlobList

Gebruik deze functie om de bestanden in de CFL Files-variabele over te zetten naar een tempBlobList-variabele.

Enums

CFL Root SubFolder Type

extensible = true
values:

  • CFL None
  • CFL Sales-
  • CFL Purchase
  • CFL PDFTools
  • CFL PDFToolsMgt
  • CFL PDFToolsErp
  • CFL Letters
  • CFL DragDrop
  • CFL Mails
  • CFL Service

CFL Storage

extensible = false
values:

  • CFL Azure Blob Storage
  • CFL BoCount OnPrem
  • CFL SharePoint
NOTE

In System OnPrem zit een extensie op deze enum voor lokale opslag van bestanden.
value: CFL Local Storage

Interfaces

CFLRootSubFolder

Interface voor bepalen van root sub folder. Implementatie van 2 functies:

procedure CFLGetRootSubFolder

Voor het bepalen van de root sub folder bij lokale folder instelling.

Voorbeeld

Via de enum "CFL Root SubFolder Type" en interface "CFLRootSubFolder" is het eenvoudig mogelijk om bijkomende subfolders te creëren en te gebruiken. Dit voorbeeld toont aan hoe de extensie BoCount Dynamics Electronic Banking een uitbreiding maakt hierop.

Er wordt een enumextensie gemaakt die een subfolder type toevoegt. De nieuwe value heeft een implementation van de "CFLRootSubFolder"-interface.

enumextension 2098360 "CFL Coda Root Sub Folder Type Ext" extends "CFL Root Sub Folder Type"
{
    value(2098360; "CFL Coda")
    {
        caption = 'Coda';
        Implementation = CFLRootSubFolder = "CFL SubFolder Coda";
    }
}

Er wordt een codeunit gemaakt die deze waarde implementeert.

codeunit 2098370 "CFL SubFolder Coda" implements CFLRootSubFolder
{
    procedure CFLGetRootSubFolder(): text
    begin
        exit('CODA\');
    end;
}

Eens de enumextensie en implementerende codeunit zijn gemaakt is het eenvoudig mogelijk om de subfolder op te vragen.

CFLRootFolderMgt.CFLGetRootSubFolder(CFLSubFolderType::"CFL Coda")