private void UpdateDocument(CompanyLayoutType documentType) { bool showUpdateInv = api.CompanyEntity.Storage; var generateDoc = new CWGenerateInvoice(false, documentType.ToString(), false, true, true, false, isQuickPrintVisible: false, isShowUpdateInv: showUpdateInv); #if !SILVERLIGHT generateDoc.DialogTableId = 2000000000; generateDoc.HideOutlookOption(true); #endif generateDoc.Closed += async delegate { if (generateDoc.DialogResult == true) { busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("SendingWait"); busyIndicator.IsBusy = true; var crVisibleOrders = dgMultiInvGrid.GetVisibleRows() as IEnumerable <CreditorOrderClient>; var invoicePostingPrintGenerator = new InvoicePostingPrintGenerator(api, this); invoicePostingPrintGenerator.SetUpInvoicePosting(crVisibleOrders, generateDoc.GenrateDate, !generateDoc.UpdateInventory, documentType, false, false, false, generateDoc.SendByEmail, generateDoc.sendOnlyToThisEmail, generateDoc.Emails, false); await invoicePostingPrintGenerator.Execute(); busyIndicator.IsBusy = false; } }; generateDoc.Show(); }
/// <summary> /// Intitialization for Post Invoice /// </summary> /// <param name="postingResult">Result from Post Invoice</param> /// <param name="api">Current api instance</param> /// <param name="companyLayoutType">Layout type</param> public DebtorInvoicePrintReport(InvoicePostingResult postingResult, CrudAPI api, CompanyLayoutType companyLayoutType) { invoicePostingResult = postingResult; crudApi = api; isRePrint = true; layoutType = companyLayoutType; }
static public void Updatedata(DCOrder dbOrder, CompanyLayoutType doctype) { string prop; if (doctype == CompanyLayoutType.Packnote) { dbOrder._PackNotePrinted = BasePage.GetSystemDefaultDate(); prop = "PackNotePrinted"; } else if (doctype == CompanyLayoutType.OrderConfirmation) { dbOrder._ConfirmPrinted = BasePage.GetSystemDefaultDate(); prop = "ConfirmPrinted"; } else if (doctype == CompanyLayoutType.PickingList) { dbOrder._PicklistPrinted = BasePage.GetSystemDefaultDate(); prop = "PicklistPrinted"; } else { return; } dbOrder.NotifyPropertyChanged(prop); //we just update client, since server update was done in posting. }
/// <summary> /// Initialization for Debtor Invoice Client /// </summary> /// <param name="debtorInvoiceClient">Invoice Client</param> /// <param name="api">Current api instance</param> /// <param name="companyLayoutType">Layout type</param> public DebtorInvoicePrintReport(DebtorInvoiceClient debtorInvoiceClient, CrudAPI api, CompanyLayoutType companyLayoutType = CompanyLayoutType.Invoice) { debtorInvoice = debtorInvoiceClient; crudApi = api; isRePrint = false; layoutType = companyLayoutType; }
/// <summary> /// Initialization for CreditorInvoice client /// </summary> /// <param name="creditorInvoiceClient">Invoice client </param> /// <param name="api">Api instance</param> /// <param name="companyLayoutType">Layout type</param> public CreditorPrintReport(CreditorInvoiceClient creditorInvoiceClient, CrudAPI api, CompanyLayoutType companyLayoutType = CompanyLayoutType.PurchaseInvoice) { CreditorInvoice = creditorInvoiceClient; crudApi = api; isRePrint = false; layoutType = companyLayoutType; }
/// <summary> /// Initialization for Post invoice /// </summary> /// <param name="invPostingResult">Result from postinvoice</param> /// <param name="api">Api instacce</param> /// <param name="companyLayoutType">Layout type</param> public CreditorPrintReport(InvoicePostingResult invPostingResult, CrudAPI api, CompanyLayoutType companyLayoutType) { invoicePostingResult = invPostingResult; crudApi = api; isRePrint = true; layoutType = companyLayoutType; }
private void OrderConfirmation(DebtorOrderClient dbOrder, CompanyLayoutType doctype) { InvoiceAPI Invapi = new InvoiceAPI(api); var debtor = dbOrder.Debtor; bool showSendByMail = true; if (debtor != null) { showSendByMail = !string.IsNullOrEmpty(debtor.InvoiceEmail); } string debtorName = debtor?._Name ?? dbOrder._DCAccount; bool showUpdateInv = api.CompanyEntity.Storage || (doctype == CompanyLayoutType.Packnote && api.CompanyEntity.Packnote); CWGenerateInvoice GenrateOfferDialog = new CWGenerateInvoice(false, Uniconta.ClientTools.Localization.lookup(doctype.ToString()), isShowInvoiceVisible: true, askForEmail: true, showNoEmailMsg: !showSendByMail, debtorName: debtorName, isShowUpdateInv: showUpdateInv, isDebtorOrder: true); #if !SILVERLIGHT if (doctype == CompanyLayoutType.OrderConfirmation) { GenrateOfferDialog.DialogTableId = 2000000009; } else if (doctype == CompanyLayoutType.Packnote) { GenrateOfferDialog.DialogTableId = 2000000018; } #endif GenrateOfferDialog.SetInvPrintPreview(showPrintPreview); GenrateOfferDialog.Closed += async delegate { if (GenrateOfferDialog.DialogResult == true) { showPrintPreview = GenrateOfferDialog.ShowInvoice || GenrateOfferDialog.InvoiceQuickPrint; var invoicePostingResult = new InvoicePostingPrintGenerator(api, this, dbOrder, null, GenrateOfferDialog.GenrateDate, 0, !GenrateOfferDialog.UpdateInventory, doctype, showPrintPreview, GenrateOfferDialog.InvoiceQuickPrint, GenrateOfferDialog.NumberOfPages, GenrateOfferDialog.SendByEmail, GenrateOfferDialog.Emails, GenrateOfferDialog.sendOnlyToThisEmail, false, GenrateOfferDialog.PostOnlyDelivered, null); busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("GeneratingPage"); busyIndicator.IsBusy = true; var result = await invoicePostingResult.Execute(); busyIndicator.IsBusy = false; if (result) { Updatedata(dbOrder, doctype); } else { Utility.ShowJournalError(invoicePostingResult.PostingResult.ledgerRes, dgDebtorOrdersGrid); } } }; GenrateOfferDialog.Show(); }
private void PreInitMulitplePreviewDocument(string message, CompanyLayoutType documentType, bool showInvoice, bool quickPrintInvoice, int docCount, bool sendBymail, bool sendOnlyToMail) { if (docCount > 0) { if (showInvoice || quickPrintInvoice) { InitMultiplePreviewDocument(message, documentType, quickPrintInvoice); } else if (sendBymail || sendOnlyToMail) { UnicontaMessageBox.Show(string.Format(Uniconta.ClientTools.Localization.lookup("SendEmailMsgOBJ"), string.Format("{0} {1}", docCount, Uniconta.ClientTools.Localization.lookup(documentType.ToString()))), Uniconta.ClientTools.Localization.lookup("Message")); } } }
private void InitMultiplePreviewDocument(string updatedMsg, CompanyLayoutType docType, bool isQuickPrint) { if (UnicontaMessageBox.Show(updatedMsg, Uniconta.ClientTools.Localization.lookup("Message"), MessageBoxButton.OKCancel) == MessageBoxResult.OK) { switch (docType) { case CompanyLayoutType.Invoice: ShowMultipleInvoicePreview(isQuickPrint); break; case CompanyLayoutType.Packnote: case CompanyLayoutType.OrderConfirmation: ShowMultipleOrderToPrint(docType, isQuickPrint); break; case CompanyLayoutType.PickingList: ShowMultiplePackListPreview(isQuickPrint); break; } } }
void ShowMultipleOrderToPrint(CompanyLayoutType docType, bool isQuickPrint) { DispatcherTimer timer = new DispatcherTimer(); timer.Interval = new TimeSpan(1000); timer.Tick += delegate { timer.Stop(); int top = 200; int left = 300; int invoiceCount = 1; int itemcount = confirmOrder.Count(); busyIndicator.IsBusy = true; foreach (var item in confirmOrder) { if (item.Header == null) { continue; } var deb = (DebtorInvoiceClient)item.Header; var printHeader = string.Format("{0}: {1}, {2}", Uniconta.ClientTools.Localization.lookup("ShowPrint") + "-" + invoiceCount.ToString(), deb._DCAccount, deb.Name); object[] ob = new object[2] { item, docType }; AddDockItem(TabControls.ProformaInvoice, ob, true, printHeader, null, new Point(top, left)); left = left - left / itemcount; top = top - top / itemcount; invoiceCount++; } busyIndicator.IsBusy = false; }; timer.Start(); }
/// <summary> /// Initialization for Post Invoice and DebtorOrder Client /// </summary> /// <param name="postingResult">PostInvoice result</param> /// <param name="api">Current api instance</param> /// <param name="companyLayoutType">Layout type</param> /// <param name="orderClient">DebtorOrder/DebtorOffer client</param> public DebtorInvoicePrintReport(InvoicePostingResult postingResult, CrudAPI api, CompanyLayoutType companyLayoutType, DCOrder orderClient) : this(postingResult, api, companyLayoutType) { DebtorOrder = orderClient; }
void ShowMultipleOrderToPrint(CompanyLayoutType docType, bool isQuickPrint) { DispatcherTimer timer = new DispatcherTimer(); timer.Interval = new TimeSpan(1000); timer.Tick += async delegate { timer.Stop(); #if SILVERLIGHT int top = 200; int left = 300; int invoiceCount = 1; int itemcount = confirmOrder.Count(); #else List <IPrintReport> xtraReports = new List <IPrintReport>(); #endif busyIndicator.IsBusy = true; foreach (var item in confirmOrder) { #if SILVERLIGHT if (item.Header == null) { continue; } var deb = (DebtorInvoiceClient)item.Header; var printHeader = string.Format("{0}: {1}, {2}", Uniconta.ClientTools.Localization.lookup("ShowPrint") + "-" + invoiceCount.ToString(), deb._DCAccount, deb.Name); object[] ob = new object[2] { item, docType }; AddDockItem(TabControls.ProformaInvoice, ob, true, printHeader, null, new Point(top, left)); left = left - left / itemcount; top = top - top / itemcount; invoiceCount++; } busyIndicator.IsBusy = false; #else if (item.Key.Header == null) { continue; } var standardPrint = await ValidateStandardPrint(item.Key, item.Value, docType, isQuickPrint); if (standardPrint?.Report != null) { xtraReports.Add(standardPrint); } } busyIndicator.IsBusy = false; if (xtraReports.Count > 0) { if (!isQuickPrint) { var reportName = Uniconta.ClientTools.Localization.lookup(docType.ToString()); AddDockItem(UnicontaTabs.StandardPrintReportPage, new object[] { xtraReports, reportName }, string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("ShowPrint"), reportName)); } else { QuickPrintReports(xtraReports); } } #endif };
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(); }
/// <summary> /// Intialization of CreditorInvoice with Creditor Order /// </summary> /// <param name="postingResult">Invoice posting result</param> /// <param name="api">Api instance</param> /// <param name="companyLayoutType">Layout type</param> /// <param name="orderClient">Creditor Order client instance</param> public CreditorPrintReport(InvoicePostingResult postingResult, CrudAPI api, CompanyLayoutType companyLayoutType, CreditorOrderClient orderClient) : this(postingResult, api, companyLayoutType) { CreditorOrder = orderClient; }
async private Task <IPrintReport> ValidateStandardPrint(InvoicePostingResult invoicePostingResult, ProjectClient project, CompanyLayoutType layoutType) { busyIndicator.IsBusy = true; busyIndicator.BusyContent = string.Format("{0}..{1}: {2}", Uniconta.ClientTools.Localization.lookup("LoadingMsg"), Uniconta.ClientTools.Localization.lookup("Project"), project?._Number); IPrintReport standardPrint = null; try { var debtorInvoicePrint = new DebtorInvoicePrintReport(invoicePostingResult, api, layoutType); var isInitializedSuccess = await debtorInvoicePrint.InstantiateFields(); if (isInitializedSuccess) { var standardDebtorInvoice = new DebtorInvoiceReportClient(debtorInvoicePrint.Company, debtorInvoicePrint.Debtor, debtorInvoicePrint.DebtorInvoice, debtorInvoicePrint.InvTransInvoiceLines, debtorInvoicePrint.DebtorOrder, debtorInvoicePrint.CompanyLogo, debtorInvoicePrint.ReportName, isCreditNote: debtorInvoicePrint.IsCreditNote, messageClient: debtorInvoicePrint.MessageClient); standardPrint = new StandardPrintReport(api, new[] { standardDebtorInvoice }, (byte)Uniconta.ClientTools.Controls.Reporting.StandardReports.Invoice); standardPrint = new LayoutPrintReport(api, invoicePostingResult, layoutType); } await standardPrint.InitializePrint(); if (standardPrint?.Report == null) { standardPrint = new LayoutPrintReport(api, invoicePostingResult, layoutType); await standardPrint.InitializePrint(); } } catch (Exception ex) { busyIndicator.IsBusy = false; api.ReportException(ex, string.Format("ProjectMultiLineInvoicePage.ValidateStandardPrint(), CompanyId={0}", api.CompanyId)); } finally { busyIndicator.IsBusy = false; } return(standardPrint); }
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(); }