Basis map
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")