protected override void DataLoaded(UnicontaBaseEntity[] Arr) { if (api.CompanyEntity.DeliveryAddress && Arr != null) { var cache = api.GetCache(typeof(Debtor)); if (cache != null) { foreach (var rec in (IEnumerable <DCInvoice>)Arr) { DebtorOrders.SetDeliveryAdress(rec, (DCAccount)cache.Get(rec._DCAccount), api); } } } }
protected override void DataLoaded(UnicontaBaseEntity[] Arr) { var api = this.api; var comp = api.CompanyEntity; if (comp.DeliveryAddress && Arr != null) { foreach (var rec in Arr) { var dcInvoice = rec as CreditorInvoiceLocal; DebtorOrders.SetDeliveryAdress(dcInvoice, dcInvoice.Creditor, api); } } }
public async override Task InitQuery() { await dgPackNotesGrid.Filter(null); var api = this.api; if (api.CompanyEntity.DeliveryAddress) { var lst = dgPackNotesGrid.ItemsSource as IEnumerable <DebtorDeliveryNoteLocal>; if (lst != null) { foreach (var rec in lst) { DebtorOrders.SetDeliveryAdress(rec, rec.Debtor, api); } } } }
static public async void GenerateOIOXml(CrudAPI api, InvoicePostingResult res) { var Comp = api.CompanyEntity; var InvCache = api.GetCache(typeof(Uniconta.DataModel.InvItem)) ?? await api.LoadCache(typeof(Uniconta.DataModel.InvItem)); var VatCache = api.GetCache(typeof(Uniconta.DataModel.GLVat)) ?? await api.LoadCache(typeof(Uniconta.DataModel.GLVat)); //SystemInfo.Visible = true; int countErr = 0; SaveFileDialog saveDialog = null; InvoiceAPI Invapi = new InvoiceAPI(api); var invClient = (DebtorInvoiceClient)res.Header; var Debcache = Comp.GetCache(typeof(Debtor)) ?? await api.LoadCache(typeof(Debtor)); var debtor = (Debtor)Debcache.Get(invClient._DCAccount); var layoutGroupCache = api.GetCache(typeof(DebtorLayoutGroup)) ?? await api.LoadCache(typeof(DebtorLayoutGroup)); var invoiceLines = (InvTransClient[])res.Lines; Contact contactPerson = null; if (invClient._ContactRef != 0) { var Contacts = api.GetCache(typeof(Uniconta.DataModel.Contact)) ?? await api.LoadCache(typeof(Uniconta.DataModel.Contact)); foreach (var contact in (Uniconta.DataModel.Contact[])Contacts.GetRecords) { if (contact.RowId == invClient._ContactRef) { contactPerson = contact; break; } } } DebtorOrders.SetDeliveryAdress(invClient, debtor, api); Debtor deliveryAccount; if (invClient._DeliveryAccount != null) { deliveryAccount = (Debtor)Debcache.Get(invClient._DeliveryAccount); } else { deliveryAccount = null; } WorkInstallation workInstallation = null; if (invClient._Installation != null) { var workInstallCache = api.GetCache(typeof(Uniconta.DataModel.WorkInstallation)) ?? await api.LoadCache(typeof(Uniconta.DataModel.WorkInstallation)); workInstallation = (WorkInstallation)workInstallCache.Get(invClient._Installation); } CreationResult result; if (Comp._CountryId == CountryCode.Norway || Comp._CountryId == CountryCode.Netherlands) { result = EHF.GenerateEHFXML(Comp, debtor, deliveryAccount, invClient, invoiceLines, InvCache, VatCache, null, contactPerson); } else if (Comp._CountryId == CountryCode.Iceland) { var paymFormatCache = Comp.GetCache(typeof(DebtorPaymentFormatClientIceland)) ?? await api.LoadCache(typeof(DebtorPaymentFormatClientIceland)); TableAddOnData[] attachments = await UBL.Iceland.Attachments.CollectInvoiceAttachments(invClient, api); result = TS136137.GenerateTS136137XML(Comp, debtor, deliveryAccount, invClient, invoiceLines, InvCache, VatCache, null, contactPerson, paymFormatCache, attachments); } else { var attachments = await FromXSDFile.OIOUBL.ExportImport.Attachments.CollectInvoiceAttachments(invClient, api); result = Uniconta.API.DebtorCreditor.OIOUBL.GenerateOioXML(Comp, debtor, deliveryAccount, invClient, invoiceLines, InvCache, VatCache, null, contactPerson, attachments, layoutGroupCache, workInstallation); } bool createXmlFile = true; var errorInfo = ""; if (result.HasErrors) { countErr++; createXmlFile = false; foreach (FromXSDFile.OIOUBL.ExportImport.PrecheckError error in result.PrecheckErrors) { errorInfo += error.ToString() + "\n"; } } var applFilePath = string.Empty; bool hasUserFolder = false; if (result.Document != null && createXmlFile) { var filename = string.Format("{0}_{1}", Uniconta.ClientTools.Localization.lookup("Invoice"), invClient.InvoiceNumber); if (session.User._AppDocPath != string.Empty && Directory.Exists(session.User._AppDocPath)) { try { applFilePath = string.Format("{0}\\OIOUBL", session.User._AppDocPath); Directory.CreateDirectory(applFilePath); filename = string.Format("{0}\\{1}.xml", applFilePath, filename); hasUserFolder = true; } catch (Exception ex) { UnicontaMessageBox.Show(ex); } } else { saveDialog = UtilDisplay.LoadSaveFileDialog; saveDialog.FileName = filename; saveDialog.Filter = "XML-File | *.xml"; bool?dialogResult = saveDialog.ShowDialog(); if (dialogResult != true) { return; } filename = saveDialog.FileName; } result.Document.Save(filename); await Invapi.MarkSendInvoiceOIO(invClient); if (hasUserFolder) { UnicontaMessageBox.Show(string.Format(Uniconta.ClientTools.Localization.lookup("SaveFileMsgOBJ"), 1, Uniconta.ClientTools.Localization.lookup("Invoice"), applFilePath) , Uniconta.ClientTools.Localization.lookup("Information")); } } if (countErr != 0 && !string.IsNullOrWhiteSpace(errorInfo)) { UnicontaMessageBox.Show(errorInfo, Uniconta.ClientTools.Localization.lookup("Error")); } }
private void OrderConfirmation(CompanyLayoutType docType) { #if SILVERLIGHT confirmOrder = new List <InvoicePostingResult>(); #else confirmOrder = new Dictionary <InvoicePostingResult, DebtorOrderClient>(); #endif UnicontaClient.Pages.CWGenerateInvoice GenrateInvoiceDialog = new UnicontaClient.Pages.CWGenerateInvoice(false, Uniconta.ClientTools.Localization.lookup(docType.ToString()), isShowInvoiceVisible: true, askForEmail: true, showInputforInvNumber: false, showInvoice: true, isShowUpdateInv: true, isQuickPrintVisible: true, isDebtorOrder: true, isPageCountVisible: false); #if !SILVERLIGHT GenrateInvoiceDialog.DialogTableId = 2000000012; #endif GenrateInvoiceDialog.SetInvPrintPreview(printPreview); GenrateInvoiceDialog.Closed += async delegate { if (GenrateInvoiceDialog.DialogResult == true) { printPreview = GenrateInvoiceDialog.ShowInvoice; busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("SendingWait"); busyIndicator.IsBusy = true; var InvoiceDate = GenrateInvoiceDialog.GenrateDate; var updateStatus = GenrateInvoiceDialog.UpdateInventory; InvoiceAPI Invapi = new InvoiceAPI(api); int cnt = 0; List <string> errorList = new List <string>(); var dgOrderVisible = dgMultiInvGrid.GetVisibleRows() as IEnumerable <DebtorOrderClient>; foreach (var dbOrder in dgOrderVisible) { var result = await Invapi.PostInvoice(dbOrder, null, GenrateInvoiceDialog.GenrateDate, 0, !updateStatus, new DebtorInvoiceClient(), new DebtorInvoiceLines(), GenrateInvoiceDialog.SendByEmail, GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint, docType, GenrateInvoiceDialog.Emails, GenrateInvoiceDialog.sendOnlyToThisEmail, null, null, GenrateInvoiceDialog.PostOnlyDelivered); if (result != null && result.Err == 0 && (GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint)) { DebtorOrders.Updatedata(dbOrder, docType); var dc = dbOrder.Debtor; if (dc == null) { await api.CompanyEntity.LoadCache(typeof(Debtor), api, true); dc = dbOrder.Debtor; } DebtorOrders.SetDeliveryAdress(result.Header, dc, api); #if SILVERLIGHT confirmOrder.Add(result); #else confirmOrder.Add(result, dbOrder); #endif cnt++; } else { string error = string.Format("{0}:{1}", dbOrder._OrderNumber, Uniconta.ClientTools.Localization.lookup(result.Err.ToString())); errorList.Add(error); } } busyIndicator.IsBusy = false; string updatedMsg = Uniconta.ClientTools.Localization.lookup("Succes"); if (!GenrateInvoiceDialog.IsSimulation) { updatedMsg = string.Format(Uniconta.ClientTools.Localization.lookup("RecordsUpdated"), cnt, Uniconta.ClientTools.Localization.lookup("DebtorOrders")); } int documentsPreviewPrint = confirmOrder.Count; updatedMsg = updatedMsg + "\n" + string.Format(Uniconta.ClientTools.Localization.lookup("MulitDocPrintConfirmationMsg"), documentsPreviewPrint, string.Format("{0} {1}", Uniconta.ClientTools.Localization.lookup(docType.ToString()), Uniconta.ClientTools.Localization.lookup("Documents"))); if (errorList.Count == 0) { if ((GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint) && confirmOrder.Count > 0) { InitMultiplePreviewDocument(updatedMsg, docType, GenrateInvoiceDialog.InvoiceQuickPrint); } } else { CWErrorBox errorDialog = new CWErrorBox(errorList.ToArray(), true); errorDialog.Closed += delegate { if ((GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint) && confirmOrder.Count > 0) { InitMultiplePreviewDocument(updatedMsg, docType, GenrateInvoiceDialog.InvoiceQuickPrint); } }; errorDialog.Show(); } } }; GenrateInvoiceDialog.Show(); }
private void GenerateInvoice() { #if SILVERLIGHT invoicePosted = new List <InvoicePostingResult>(); #else invoicePosted = new Dictionary <InvoicePostingResult, DebtorOrderClient>(); #endif UnicontaClient.Pages.CWGenerateInvoice GenrateInvoiceDialog = new UnicontaClient.Pages.CWGenerateInvoice(true, string.Empty, false, true, true, isOrderOrQuickInv: true, isQuickPrintVisible: true, isPageCountVisible: false, isDebtorOrder: true); #if !SILVERLIGHT GenrateInvoiceDialog.DialogTableId = 2000000011; #endif GenrateInvoiceDialog.SetInvPrintPreview(printPreview); GenrateInvoiceDialog.Closed += async delegate { if (GenrateInvoiceDialog.DialogResult == true) { printPreview = GenrateInvoiceDialog.ShowInvoice; busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("SendingWait"); busyIndicator.IsBusy = true; var InvoiceDate = GenrateInvoiceDialog.GenrateDate; InvoiceAPI Invapi = new InvoiceAPI(api); int cnt = 0; List <string> errorList = new List <string>(); var dbVisibleOrders = dgMultiInvGrid.GetVisibleRows() as IEnumerable <DebtorOrderClient>; foreach (var dbOrder in dbVisibleOrders) { if (dbOrder._SubscriptionEnded != DateTime.MinValue && dbOrder._SubscriptionEnded < InvoiceDate) { continue; } var result = await Invapi.PostInvoice(dbOrder, null, InvoiceDate, 0, GenrateInvoiceDialog.IsSimulation, new DebtorInvoiceClient(), new DebtorInvoiceLines(), GenrateInvoiceDialog.SendByEmail, (GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint || GenrateInvoiceDialog.GenerateOIOUBLClicked), 0, GenrateInvoiceDialog.Emails, GenrateInvoiceDialog.sendOnlyToThisEmail, null, null, GenrateInvoiceDialog.PostOnlyDelivered); if (result != null && result.Err == 0) { #if SILVERLIGHT invoicePosted.Add(result); #else invoicePosted.Add(result, dbOrder); #endif cnt++; var dc = dbOrder.Debtor; if (dc == null) { await api.CompanyEntity.LoadCache(typeof(Debtor), api, true); dc = dbOrder.Debtor; } DebtorOrders.SetDeliveryAdress(result.Header, dc, api); } else { string error = string.Format("{0}:{1}", dbOrder._OrderNumber, Uniconta.ClientTools.Localization.lookup(result.Err.ToString())); errorList.Add(error); } } busyIndicator.IsBusy = false; string updatedMsg = Uniconta.ClientTools.Localization.lookup("Succes"); if (!GenrateInvoiceDialog.IsSimulation) { updatedMsg = string.Format(Uniconta.ClientTools.Localization.lookup("RecordsUpdated"), cnt, Uniconta.ClientTools.Localization.lookup("DebtorOrders")); } #if !SILVERLIGHT if (GenrateInvoiceDialog.GenerateOIOUBLClicked && !GenrateInvoiceDialog.IsSimulation) { GenerateOIOXmlForAll(errorList, !GenrateInvoiceDialog.SendByEmail); } #endif int previewInvoiceCount = invoicePosted.Count; updatedMsg = updatedMsg + "\n" + string.Format(Uniconta.ClientTools.Localization.lookup("MulitDocPrintConfirmationMsg"), previewInvoiceCount, Uniconta.ClientTools.Localization.lookup("Invoices")); if (errorList.Count == 0) { if ((GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint) && previewInvoiceCount > 0) { InitMultiplePreviewDocument(updatedMsg, CompanyLayoutType.Invoice, GenrateInvoiceDialog.InvoiceQuickPrint); } } else { CWErrorBox errorDialog = new CWErrorBox(errorList.ToArray(), true); errorDialog.Closed += delegate { if ((GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint) && previewInvoiceCount > 0) { InitMultiplePreviewDocument(updatedMsg, CompanyLayoutType.Invoice, GenrateInvoiceDialog.InvoiceQuickPrint); } }; errorDialog.Show(); } } }; GenrateInvoiceDialog.Show(); }
public static async void GenerateOIOXml(CrudAPI api, DCInvoice inv) { var Comp = api.CompanyEntity; var InvCache = api.GetCache(typeof(Uniconta.DataModel.InvItem)) ?? await api.LoadCache(typeof(Uniconta.DataModel.InvItem)); var VatCache = api.GetCache(typeof(Uniconta.DataModel.GLVat)) ?? await api.LoadCache(typeof(Uniconta.DataModel.GLVat)); //SystemInfo.Visible = true; int countErr = 0; SaveFileDialog saveDialog = null; Uniconta.API.DebtorCreditor.InvoiceAPI Invapi = new Uniconta.API.DebtorCreditor.InvoiceAPI(api); var listPropval = new List <PropValuePair>() { PropValuePair.GenereteWhereElements("InvoiceNumber", inv._InvoiceNumber, CompareOperator.Equal), PropValuePair.GenereteWhereElements("DCAccount", inv._DCAccount, CompareOperator.Equal), PropValuePair.GenereteWhereElements("Date", inv._Date, CompareOperator.Equal) }; var FindDebInvLocal = await api.Query <DebtorInvoiceClient>(listPropval); var invClient = FindDebInvLocal.FirstOrDefault(); if (invClient == null) { return; } var Debcache = Comp.GetCache(typeof(Debtor)) ?? await api.LoadCache(typeof(Debtor)); var debtor = (Debtor)Debcache.Get(invClient._DCAccount); if (debtor == null || !debtor._InvoiceInXML || invClient.SendTimeOIO != DateTime.MinValue) { if (!debtor._InvoiceInXML) { UnicontaMessageBox.Show("Faktura i OIOUBL er ikke sat til denne debitor", Uniconta.ClientTools.Localization.lookup("Warning")); } return; } var InvTransInvoiceLines = (DebtorInvoiceLines[])await Invapi.GetInvoiceLines(invClient, new DebtorInvoiceLines()); //TODO:Test fakturering var layoutGroupCache = api.GetCache(typeof(DebtorLayoutGroup)) ?? await api.LoadCache(typeof(DebtorLayoutGroup)); Contact contactPerson = null; if (invClient._ContactRef != 0) { var Contacts = api.GetCache(typeof(Uniconta.DataModel.Contact)) ?? await api.LoadCache(typeof(Uniconta.DataModel.Contact)); foreach (var contact in (Uniconta.DataModel.Contact[])Contacts.GetRecords) { if (contact.RowId == invClient._ContactRef) { contactPerson = contact; break; } } } DebtorOrders.SetDeliveryAdress(invClient, debtor, api); Debtor deliveryAccount; if (invClient._DeliveryAccount != null) { deliveryAccount = (Debtor)Debcache.Get(invClient._DeliveryAccount); } else { deliveryAccount = null; } WorkInstallation workInstallation = null; if (invClient._Installation != null) { var workInstallCache = api.GetCache(typeof(Uniconta.DataModel.WorkInstallation)) ?? await api.LoadCache(typeof(Uniconta.DataModel.WorkInstallation)); workInstallation = (WorkInstallation)workInstallCache.Get(invClient._Installation); } CreationResult result; if (Comp._CountryId == CountryCode.Norway || Comp._CountryId == CountryCode.Netherlands) { result = EHF.GenerateEHFXML(Comp, debtor, deliveryAccount, invClient, InvTransInvoiceLines, InvCache, VatCache, null, contactPerson); } else { var attachments = await FromXSDFile.OIOUBL.ExportImport.Attachments.CollectInvoiceAttachments(invClient, api); result = Uniconta.API.DebtorCreditor.OIOUBL.GenerateOioXML(Comp, debtor, deliveryAccount, invClient, InvTransInvoiceLines, InvCache, VatCache, null, contactPerson, attachments, layoutGroupCache, workInstallation); } bool createXmlFile = true; var errorInfo = ""; if (result.HasErrors) { countErr++; createXmlFile = false; foreach (FromXSDFile.OIOUBL.ExportImport.PrecheckError error in result.PrecheckErrors) { errorInfo += error.ToString() + "\n"; } } if (result.Document != null && createXmlFile) { string invoice = Uniconta.ClientTools.Localization.lookup("Invoice"); saveDialog = Uniconta.ClientTools.Util.UtilDisplay.LoadSaveFileDialog; saveDialog.FileName = string.Format("{0}_{1}", invoice, invClient.InvoiceNumber); saveDialog.Filter = "XML-File | *.xml"; bool?dialogResult = saveDialog.ShowDialog(); if (dialogResult != true) { return; } var filename = saveDialog.FileName; result.Document.Save(filename); await Invapi.MarkSendInvoiceOIO(invClient); invClient.SendTimeOIO = BasePage.GetSystemDefaultDate(); } //invClient.NotifySystemInfoSet(); //if (countErr != 0) // UnicontaMessageBox.Show(Uniconta.ClientTools.Localization.lookup(String.Format("Couldn't create file for {0} invoice(s). Please check System info column.", countErr))); if (countErr != 0 && !string.IsNullOrWhiteSpace(errorInfo)) { UnicontaMessageBox.Show(errorInfo, Uniconta.ClientTools.Localization.lookup("Error")); } }
private void OrderConfirmation(CreditorOrderClient dbOrder, CompanyLayoutType doctype) { InvoiceAPI Invapi = new InvoiceAPI(api); var creditor = dbOrder.Creditor; bool showSendByMail = true; if (creditor != null) { showSendByMail = !string.IsNullOrEmpty(creditor._InvoiceEmail); } string creditorName = creditor?._Name ?? dbOrder._DCAccount; var comp = api.CompanyEntity; bool showUpdateInv = comp.Storage || (doctype == CompanyLayoutType.PurchasePacknote && comp.CreditorPacknote); CWGenerateInvoice GenrateOfferDialog = new CWGenerateInvoice(false, doctype.ToString(), showInputforInvNumber: doctype == CompanyLayoutType.PurchasePacknote ? true : false, isShowInvoiceVisible: true, askForEmail: true, showNoEmailMsg: !showSendByMail, debtorName: creditorName, isShowUpdateInv: showUpdateInv); #if !SILVERLIGHT switch (doctype) { case CompanyLayoutType.PurchaseOrder: GenrateOfferDialog.DialogTableId = 2000000003; break; case CompanyLayoutType.PurchasePacknote: GenrateOfferDialog.DialogTableId = 2000000056; break; case CompanyLayoutType.Requisition: GenrateOfferDialog.DialogTableId = 2000000057; break; } #endif GenrateOfferDialog.SetInvPrintPreview(showInvPrintPreview); var additionalOrdersList = Utility.GetAdditionalOrders(api, dbOrder); if (additionalOrdersList != null) { GenrateOfferDialog.SetAdditionalOrders(additionalOrdersList); } GenrateOfferDialog.Closed += async delegate { if (GenrateOfferDialog.DialogResult == true) { showInvPrintPreview = GenrateOfferDialog.ShowInvoice || GenrateOfferDialog.InvoiceQuickPrint || GenrateOfferDialog.SendByOutlook; string documentNumber = null; if (doctype == CompanyLayoutType.PurchasePacknote) { documentNumber = GenrateOfferDialog.InvoiceNumber; dbOrder._InvoiceNumber = documentNumber; } var openOutlook = doctype == CompanyLayoutType.PurchasePacknote ? GenrateOfferDialog.UpdateInventory && GenrateOfferDialog.SendByOutlook : GenrateOfferDialog.SendByOutlook; var invoicePostingResult = new InvoicePostingPrintGenerator(api, this); invoicePostingResult.SetUpInvoicePosting(dbOrder, null, doctype, GenrateOfferDialog.GenrateDate, documentNumber, !GenrateOfferDialog.UpdateInventory, GenrateOfferDialog.ShowInvoice, false, GenrateOfferDialog.InvoiceQuickPrint, GenrateOfferDialog.NumberOfPages, GenrateOfferDialog.SendByEmail, openOutlook, GenrateOfferDialog.sendOnlyToThisEmail, GenrateOfferDialog.Emails, false, null, false); invoicePostingResult.SetAdditionalOrders(GenrateOfferDialog.AdditionalOrders?.Cast <DCOrder>().ToList()); busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("GeneratingPage"); busyIndicator.IsBusy = true; var result = await invoicePostingResult.Execute(); busyIndicator.IsBusy = false; if (result) { DebtorOrders.Updatedata(dbOrder, doctype); } else { Utility.ShowJournalError(invoicePostingResult.PostingResult.ledgerRes, dgCreditorOrdersGrid); } } }; GenrateOfferDialog.Show(); }