public static void Main(object erp, object SetupHelper, object result)
result.AppendLine($"Running for Org: {erp.CurrentOrganisation.Organisation.OrganisationCode}, {erp.CurrentOrganisation.Country.CountryCode}, {erp.CurrentUserProfile.User.UserName}, Language={erp.Rtm.LanguageCode}, LanguageTest={erp.Literal("DDLabelProductSKU-")}");
var cc = erp.Settings.WorkshopSettings.CountryCode;
erp.Data.TransactionBegin();
var vtPITemplateCode = cc == "DK" ? "VTPI" : "VTPI";
var vtPITemplateDesc = cc == "DK" ? "Indkøbsfaktura Køretøjshandel" : "Purchase Invoice Vehicle Trade";
var vtPITemplate = SetupHelper.AddTemplate(erp, vtPITemplateCode, vtPITemplateDesc, Schema.StaticLookup.TemplateEntityType.PurchaseInvoiceDocument);
var vtPurchaseInvoiceTypeCode = cc == "DK" ? "VTPI" : "VTPI";
var vtPurchaseInvoiceTypeDesc = cc == "DK" ? "Indkøbsfaktura Køretøjshandel" : "Purchase Invoice Vehicle Trade";
var vtPurchaseInvoiceTypeTitle = cc == "DK" ? "Køretøjs Indkøbsfaktura" : "Vehicle Purchase Invoice";
var vtPurchaseInvoiceTypeDraftTitle = cc == "DK" ? "Kladde Indkøbsfaktura" : "Draft Purchase Invoice";
var vtPurchaseInvoiceType = SetupHelper.AddPurchaseInvoiceType(erp, vtPurchaseInvoiceTypeCode, vtPurchaseInvoiceTypeDesc, templateDbid: vtPITemplate.TemplateDBID, title: vtPurchaseInvoiceTypeTitle, draftTitle: vtPurchaseInvoiceTypeDraftTitle);
var vtSalesInvoiceTypeCode = cc == "DK" ? "VTSI" : "VTSI";
var vtSalesInvoiceTypeDesc = cc == "DK" ? "Køretøjshandel Faktura" : "Sales Invoice Vehicle Trade";
var vtSalesInvoiceTypeTitle = cc == "DK" ? "Køretøjshandel Faktura" : "Vehicle Sales Invoice";
var vtSalesInvoiceTypeDraftTitle = cc == "DK" ? "Kladde Køretøjshandel Faktura" : "";
var vtSalesInvoiceType = SetupHelper.AddSalesInvoiceType(erp, vtSalesInvoiceTypeCode, vtSalesInvoiceTypeDesc, templateDbid: vtPITemplate.TemplateDBID, title: vtSalesInvoiceTypeTitle, draftTitle: vtSalesInvoiceTypeDraftTitle);
var vtAddOnCode = cc == "DK" ? "VehicleTrade" : "VehicleTrade";
var vtAddOnDesc = cc == "DK" ? "Køretøjshandel" : "Vehicle Trade";
var addOn = SetupHelper.AddAddOn(erp, vtAddOnCode, vtAddOnDesc, Erp.Schema.StaticLookup.AddOnType.VehicleTrade);
var vtTaxDif = SetupHelper.AddTax(erp, "VATDIF", "Differencemoms", Schema.StaticLookup.TaxType.FEE, 0);
var vtTaxErh = SetupHelper.AddTax(erp, "VATERH", "Erhvervelsmoms", Schema.StaticLookup.TaxType.FEE, 0);
var vtTaxImp = SetupHelper.AddTax(erp, "VARIMP", "Importmoms", Schema.StaticLookup.TaxType.FEE, 0);
var taxFre = erp.Data.ReadByCodeMandatory<Schema.GL.Tax>("FRE");
var vtEquipmentTypeSku = cc == "DK" ? "VT" : "VT";
var vtEquipmentTypeDesc = cc == "DK" ? "Køretøjshandel" : "Vehicle Trade";
var vehicleInvEquipmentType = SetupHelper.AddEquipmentType(erp, vtEquipmentTypeSku, vtEquipmentTypeDesc, "VEH");
var vtSalesProductSuperGroupCode = cc == "DK" ? "VTS" : "VTS";
var vtSalesProductSuperGroupDesc = cc == "DK" ? "Salg biler" : "Vehicle Sales";
var vtSalesProductSuperGroup = SetupHelper.AddProductSuperGroup(erp, vtSalesProductSuperGroupCode, vtSalesProductSuperGroupDesc);
var vtProductClass1Sku = cc == "DK" ? "VT1" : "VT1";
var vtProductClass1Desc = cc == "DK" ? "Salg ny biler" : "Sale New Vehicle";
var vtProductClass2Sku = cc == "DK" ? "VT2" : "VT2";
var vtProductClass2Desc = cc == "DK" ? "Salg brugte biler (Brugtmoms)" : "Sale Used Vehicle (Used VAT)";
var vtProductClass3Sku = cc == "DK" ? "VT3" : "VT3";
var vtProductClass3Desc = cc == "DK" ? "Salg brugte biler (DK + moms)" : "Sale Used Vehicle (Used VAT)";
var vtProductClass4Sku = cc == "DK" ? "VT4" : "VT4";
var vtProductClass4Desc = cc == "DK" ? "Salg brugte biler (Indenfor EU uden Moms)" : "Sale Used Vehicle (EU w/o VAT)";
var vtProductClass5Sku = cc == "DK" ? "VT5" : "VT5";
var vtProductClass5Desc = cc == "DK" ? "Salg brugte biler (Indenfor EU + Moms)" : "Sale Used Vehicle (EU with VAT)";
var vtProductClass6Sku = cc == "DK" ? "VT6" : "VT6";
var vtProductClass6Desc = cc == "DK" ? "Salg brugte biler (Udenfor EU)" : "Sale Used Vehicle (Outside EU)";
var vtProductClass1 = SetupHelper.AddProductClass(erp, vtProductClass1Sku, vtProductClass1Desc);
var vtProductClass2 = SetupHelper.AddProductClass(erp, vtProductClass2Sku, vtProductClass2Desc);
var vtProductClass3 = SetupHelper.AddProductClass(erp, vtProductClass3Sku, vtProductClass3Desc);
var vtProductClass4 = SetupHelper.AddProductClass(erp, vtProductClass4Sku, vtProductClass4Desc);
var vtProductClass5 = SetupHelper.AddProductClass(erp, vtProductClass5Sku, vtProductClass5Desc);
var vtProductClass6 = SetupHelper.AddProductClass(erp, vtProductClass6Sku, vtProductClass6Desc);
var inventoryProductClass = erp.Data.ReadByCodeMandatory<Schema.CA.ProductClass>("I");
var vtProductTypeSku = cc == "DK" ? "VTINV" : "VTINV";
var vtProductTypeDesc = cc == "DK" ? "Bilhandel Lager" : "Vehicle Trade Inventory";
var vtInvProductType = SetupHelper.AddProductType(erp, vtProductTypeSku, vtProductTypeDesc, "PRIM");
var carSales1Sku = cc == "DK" ? "BIL-1" : "CAR-1";
var carSales1Desc = cc == "DK" ? "Salg nye biler (DK Inklusiv Moms)" : "Sale New Vehicle (DK VAT Inc)";
var carSales2Sku = cc == "DK" ? "BIL-2" : "CAR-2";
var carSales2Desc = cc == "DK" ? "Salg brugte biler (DK Inklusiv moms)" : "Sale Used Vehicle (DK VAT Inc)";
var carSales3Sku = cc == "DK" ? "BIL-3" : "CAR-3";
var carSales3Desc = cc == "DK" ? "Salg brugte biler (Difference Moms)" : "Sale Used Vehicle (Used VAT)";
var carSales4Sku = cc == "DK" ? "BIL-4" : "CAR-4";
var carSales4Desc = cc == "DK" ? "Salg brugte biler (Indenfor EU Eksklusiv Moms)" : "Sale Used Vehicle (EU w/o VAT)";
var carSales5Sku = cc == "DK" ? "BIL-5" : "CAR-5";
var carSales5Desc = cc == "DK" ? "Salg brugte biler (Indenfor EU Inklusiv Moms)" : "Sale Used Vehicle (EU with VAT)";
var carSales6Sku = cc == "DK" ? "BIL-6" : "CAR-6";
var carSales6Desc = cc == "DK" ? "Salg brugte biler (Udenfor EU)" : "Sale Used Vehicle (Outside EU)";
var carSales1 = SetupHelper.AddProduct(erp, carSales1Sku, carSales1Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass1.ProductClassDBID);
var carSales2 = SetupHelper.AddProduct(erp, carSales2Sku, carSales2Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass2.ProductClassDBID);
var carSales3 = SetupHelper.AddProduct(erp, carSales3Sku, carSales3Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass3.ProductClassDBID, saleTaxDbid: vtTaxDif.TaxDBID);
var carSales4 = SetupHelper.AddProduct(erp, carSales4Sku, carSales4Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass4.ProductClassDBID, saleTaxDbid: taxFre.TaxDBID);
var carSales5 = SetupHelper.AddProduct(erp, carSales5Sku, carSales5Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass5.ProductClassDBID);
var carSales6 = SetupHelper.AddProduct(erp, carSales6Sku, carSales6Desc, true, vtSalesProductSuperGroup.ProductSuperGroupDBID, 0, 0, productClassDbid: vtProductClass6.ProductClassDBID, saleTaxDbid: taxFre.TaxDBID);
var carInv1Sku = cc == "DK" ? "BIL-LAG1" : "CAR-INV1";
var carInv1Desc = cc == "DK" ? "Varelager nye biler" : "Inventory New Cars";
var carInv2Sku = cc == "DK" ? "BIL-LAG2" : "CAR-INV2";
var carInv2Desc = cc == "DK" ? "Varelager brugte biler (Inklusiv moms)" : "Inventory Used Cars (VAT incl)";
var carInv3Sku = cc == "DK" ? "BIL-LAG3" : "CAR-INV3";
var carInv3Desc = cc == "DK" ? "Varelager brugte biler (Difference Moms)" : "Inventory Used Cars (Used VAT)";
var carInv4Sku = cc == "DK" ? "BIL-LAG4" : "CAR-INV4";
var carInv4Desc = cc == "DK" ? "Varelager brugte biler (Erhvervelsesmoms)" : "Inventory Used Cars (VAT incl)";
var carInv5Sku = cc == "DK" ? "BIL-LAG5" : "CAR-INV5";
var carInv5Desc = cc == "DK" ? "Varelager brugte biler (Importmoms)" : "Inventory Used Cars (Import VAT)";
var carInv1 = SetupHelper.AddProduct(erp, carInv1Sku, carInv1Desc, false, "", 0, 0, productTypeDbid: vtInvProductType.ProductTypeDBID, lotTrackType: "SerialNoReceipt", productClassDbid: inventoryProductClass.ProductClassDBID);
var carInv2 = SetupHelper.AddProduct(erp, carInv2Sku, carInv2Desc, false, "", 0, 0, productTypeDbid: vtInvProductType.ProductTypeDBID, lotTrackType: "SerialNoReceipt", productClassDbid: inventoryProductClass.ProductClassDBID);
var carInv3 = SetupHelper.AddProduct(erp, carInv3Sku, carInv3Desc, false, "", 0, 0, productTypeDbid: vtInvProductType.ProductTypeDBID, lotTrackType: "SerialNoReceipt", productClassDbid: inventoryProductClass.ProductClassDBID, purchaseTaxDbid: vtTaxDif.TaxDBID);
var carInv4 = SetupHelper.AddProduct(erp, carInv4Sku, carInv4Desc, false, "", 0, 0, productTypeDbid: vtInvProductType.ProductTypeDBID, lotTrackType: "SerialNoReceipt", productClassDbid: inventoryProductClass.ProductClassDBID, purchaseTaxDbid: vtTaxErh.TaxDBID);
var carInv5 = SetupHelper.AddProduct(erp, carInv5Sku, carInv5Desc, false, "", 0, 0, productTypeDbid: vtInvProductType.ProductTypeDBID, lotTrackType: "SerialNoReceipt", productClassDbid: inventoryProductClass.ProductClassDBID, purchaseTaxDbid: vtTaxImp.TaxDBID);
var supplier1Code = cc == "DK" ? "BIL-LAG1" : "CAR-INV1";
var supplier1Name = cc == "DK" ? "Ny køretøjs leverandør" : "New Vehicle (VAT Inc)";
var supplier2Code = cc == "DK" ? "BIL-LAG2" : "CAR-INV2";
var supplier2Name = cc == "DK" ? "Brugt køretøj (Inklusiv Moms)" : "Used Vehicle (VAT Inc)";
var supplier3Code = cc == "DK" ? "BIL-LAG3" : "CAR-INV3";
var supplier3Name = cc == "DK" ? "Brugt køretøj (Difference Moms)" : "Used Vehicle (Used VAT)";
var supplier4Code = cc == "DK" ? "BIL-LAG4" : "CAR-INV4";
var supplier4Name = cc == "DK" ? "Brugt køretøj (Erhvervelsesmoms - EU uden moms)" : "Used Vehicle (Acquisition VAT)";
var supplier5Code = cc == "DK" ? "BIL-LAG5" : "CAR-INV5";
var supplier5Name = cc == "DK" ? "Brugt køretøj (Importmoms - udenfor EU uden moms)" : "Used Vehicle (Import VAT)";
var supplier1 = SetupHelper.AddSupplier(erp, supplier1Code, supplier1Name, erp.CurrentOrganisation.Currency.CurrencyDBID, useContactDetails: true);
var supplierExtension = Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.Supplier>(erp, supplier1.SupplierDBID);
supplierExtension.VtInventoryProductDBID = carInv1.ProductDBID;
supplierExtension.VtPurchaseType = "VehicleDkA";
Library.EntityExtensionData.Write(erp, supplierExtension);
var supplier2 = SetupHelper.AddSupplier(erp, supplier2Code, supplier2Name, erp.CurrentOrganisation.Currency.CurrencyDBID, useContactDetails: true);
supplierExtension = Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.Supplier>(erp, supplier2.SupplierDBID);
supplierExtension.VtInventoryProductDBID = carInv2.ProductDBID;
supplierExtension.VtPurchaseType = "VehicleDkA";
Library.EntityExtensionData.Write(erp, supplierExtension);
var supplier3 = SetupHelper.AddSupplier(erp, supplier3Code, supplier3Name, erp.CurrentOrganisation.Currency.CurrencyDBID, useContactDetails: true);
supplierExtension = Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.Supplier>(erp, supplier3.SupplierDBID);
supplierExtension.VtInventoryProductDBID = carInv3.ProductDBID;
supplierExtension.VtPurchaseType = "VehicleDkB";
Library.EntityExtensionData.Write(erp, supplierExtension);
var supplier4 = SetupHelper.AddSupplier(erp, supplier4Code, supplier4Name, erp.CurrentOrganisation.Currency.CurrencyDBID, useContactDetails: true);
supplierExtension = Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.Supplier>(erp, supplier4.SupplierDBID);
supplierExtension.VtInventoryProductDBID = carInv4.ProductDBID;
supplierExtension.VtPurchaseType = "VehicleDkC";
Library.EntityExtensionData.Write(erp, supplierExtension);
var supplier5 = SetupHelper.AddSupplier(erp, supplier5Code, supplier5Name, erp.CurrentOrganisation.Currency.CurrencyDBID, useContactDetails: true);
supplierExtension = Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.Supplier>(erp, supplier5.SupplierDBID);
supplierExtension.VtInventoryProductDBID = carInv5.ProductDBID;
supplierExtension.VtPurchaseType = "VehicleDkD";
Library.EntityExtensionData.Write(erp, supplierExtension);
var vtRepairJobTypeCode = cc == "DK" ? "VTRepair" : "VTRepair";
var vtRepairJobTypeDesc = cc == "DK" ? "Reparation til salg" : "Vehicle Sales Repair";
var vtWarrantyJobTypeCode = cc == "DK" ? "VTWarranty" : "VTWarranty";
var vtWarrantyJobTypeDesc = cc == "DK" ? "Garantireparation til salg" : "Vehicle Sales Warranty";
var vtRepairJobType = SetupHelper.AddJobType(erp, vtRepairJobTypeCode, vtRepairJobTypeDesc, Schema.StaticLookup.JobTypeClass.VehicleTrade, true);
var vtWarrantyJobType = SetupHelper.AddJobType(erp, vtWarrantyJobTypeCode, vtWarrantyJobTypeDesc, Schema.StaticLookup.JobTypeClass.VehicleTrade, true);
var addOnExtension = Erp.Library.EntityExtensionData.Read<Erp.EntityExtension.Entity.AddOnVehicleTrade>(erp, addOn.AddOnDBID);
addOnExtension.DefaultCurrencyDBID = erp.CurrentOrganisation.Currency.CurrencyDBID;
addOnExtension.DefaultInventoryProductDBID = carInv3.ProductDBID;
addOnExtension.DefaultSupplierDBID = supplier1.SupplierDBID;
addOnExtension.ExternalJournalId = "6";
addOnExtension.InventoryEquipmentTypeDBID = vehicleInvEquipmentType.EquipmentTypeDBID;
addOnExtension.InventoryProductTypeDBID = vtInvProductType.ProductTypeDBID;
addOnExtension.SalesProductSuperGroupDBID = vtSalesProductSuperGroup.ProductSuperGroupDBID;
addOnExtension.PostLedgerEntries = true;
addOnExtension.PurchaseInvoiceTypeDBID = vtPurchaseInvoiceType.PurchaseInvoiceTypeDBID;
addOnExtension.RepairJobTypeDBID = vtRepairJobType.JobTypeDBID;
addOnExtension.RepairPartsInventoryAtCost = false;
addOnExtension.SalesInvoiceTypeDBID = vtSalesInvoiceType.SalesInvoiceTypeDBID;
addOnExtension.WarrantyJobTypeDBID = vtWarrantyJobType.JobTypeDBID;
addOnExtension.WarrantyPartsInventoryAtCost = false;
addOnExtension.VatDiffTaxDBID = vtTaxDif.TaxDBID;
addOnExtension.ZeroRateTaxDBID = taxFre.TaxDBID;
Erp.Library.EntityExtensionData.Write(erp.Rtm, addOnExtension);
var dContactSettings = erp.Settings.Get<Settings.Entity.DContactSettings>();
dContactSettings.EnableVatin = true;
dContactSettings.Persist(erp);
var enabledFeatures = erp.Settings.Get<Settings.Entity.EnabledFeatureSettings>();
enabledFeatures.KeyAccountCard = true;
enabledFeatures.Persist(erp);