Skip to content

Instantly share code, notes, and snippets.

View jvanhoesen's full-sized avatar

Joshua Van Hoesen jvanhoesen

View GitHub Profile
@jvanhoesen
jvanhoesen / Project.xml
Created April 13, 2021 13:25
Customization Project XML
<Sql TableName="Table1" TableSchemaXml="#CDATA">
<CDATA name="TableSchemaXml"><![CDATA[<table name="Table1">
<col name="Field1" type="Int" default="Zero" />
<col name="Field2" type="NVarChar(10)" />
<index name="PK_Table1" clustered="true" primary="true" unique="true">
<col name="Field1" />
<col name="Field2" />
</index>
</table>]]></CDATA>
</Sql>
@jvanhoesen
jvanhoesen / SelectRecords.cs
Created June 2, 2021 13:48
Selects DACs from the database including Extension fields
public static IEnumerable<TNode> SelectRecords(params PXDataField[] restricts)
{
//Retrieves table structure for specified TNode
TableHeader tableStructure = PXDatabase.GetTableStructure(typeof(TNode).Name);
//Should be null if there's no Table, IE if you're using a Synthetic DAC
if (tableStructure != null)
{
List<PXDataField> parameters = new List<PXDataField>();
IEnumerable<PXDataRecord> selectDel = null;
@jvanhoesen
jvanhoesen / GetExtensions.cs
Created June 2, 2021 13:51
Retrieves slot of type PXCacheExtensionCollection
public static PXCacheExtension[] GetExtensions(TNode row)
{
object pxCacheExtensionCollection = AAReflectionHelper.InvokeMethod(PXCacheExtensionCollectionType, null, "GetSlot", PXCacheExtensionCollectionType, new Type[0], new object[] { true });
object syncRoot = ((ICollection)pxCacheExtensionCollection).SyncRoot;
PXCacheExtension[] extensions;
IDictionary<IBqlTable, PXCacheExtension[]> dict = pxCacheExtensionCollection as IDictionary<IBqlTable, PXCacheExtension[]>;
lock (syncRoot)
{
@jvanhoesen
jvanhoesen / AAInventoryItemCache.cs
Created June 2, 2021 15:25
Updated IPrefetchable implementation utilizing AACache
internal sealed class AAInventoryItemCache : IPrefetchable
{
private Dictionary<int, InventoryItem> _InventoryItems = new Dictionary<int, InventoryItem>();
public void Prefetch()
{
_InventoryItems.Clear();
foreach (InventoryItem item in AACache<InventoryItem>.SelectRecords())
{
@jvanhoesen
jvanhoesen / Properties.cs
Last active June 2, 2021 17:49
Property declaration of AACache
private static CacheStaticInfo _staticInfo;
private static Type _pXCacheExtensionCollectionType;
protected static CacheStaticInfo StaticInfo
{
get
{
if (_staticInfo == null)
{
@jvanhoesen
jvanhoesen / Prefetch.cs
Created June 2, 2021 18:50
Prefetch default implementation vs advanced implementation
//Default implementation
public void Prefetch()
{
_InventoryItems.Clear();
foreach (InventoryItem item in PXDatabase.SelectRecords<InventoryItem>())
{
_InventoryItems[item.InventoryID.Value] = item;
}
}
@jvanhoesen
jvanhoesen / ZipArchiveCreate.cs
Created February 2, 2022 21:12
Creation of .Zip file
using (MemoryStream zipStream = new MemoryStream())
{
zipStream.Seek(0, SeekOrigin.Begin);
//2nd Parameter determines if .Zip is read only
using (ZipArchive zip = ZipArchive.CreateFrom(zipStream, false))
{
//Read or write data
}
}
@jvanhoesen
jvanhoesen / FileAddition.cs
Created February 2, 2022 21:18
Addition of file to created .Zip archive
using (ZipArchive zip = ZipArchive.CreateFrom(zipStream, false))
{
using (MemoryStream fileStream = new MemoryStream())
{
fileStream.Seek(0, SeekOrigin.Begin);
file.Write(fileStream);
fileStream.Seek(0, SeekOrigin.Begin);
@jvanhoesen
jvanhoesen / ZipArchiveOpen.cs
Created March 28, 2022 18:36
Open existing .Zip file
//Retrieving .ZIP file attached to Acumatica document
PX.SM.FileInfo fileInfo = uploadFileMaint.GetFile(zipFile);
if(fileInfo != null)
{
//Create a new memory stream from .ZIP file data
using (MemoryStream stream = new MemoryStream(fileInfo.BinData))
{
//Create new instance of ZipArchive to interact with .ZIP file
using (ZipArchive zip = ZipArchive.CreateFrom(stream, true))
{
@jvanhoesen
jvanhoesen / ZipArchiveIterate.cs
Created March 28, 2022 18:48
Iterate through file names in Archive
//Iterate through all files and retrieve each files ItemInfo containing it's name
foreach (ZipArchive.ItemInfo info in zip.GetFiles())
{
//Use file name to retrieve file from .Zip Archive
}