private static void AddPOReceiptToBill(PXGraph graph, APInvoiceEntry invoiceEntry, EntityValueField receiptNbr) { var receiptExtension = graph.GetExtension <PO.GraphExtensions.APInvoiceSmartPanel.AddPOReceiptExtension>(); POReceipt line = (POReceipt)(receiptExtension.poreceiptslist.Select().Where(x => ((POReceipt)x).ReceiptNbr == receiptNbr.Value).FirstOrDefault()); if (line == null) { throw new PXException($"Purchase Receipt {receiptNbr.Value} was not found."); } line.Selected = true; receiptExtension.poreceiptslist.Update(line); receiptExtension.addPOReceipt2.Press(); }
public void InvoicePOReceipt( POReceipt receipt, DocumentList <APInvoice> list, bool saveAndAdd, bool usePOParemeters, bool keepOrderTaxes, bool errorIfUnreleasedAPExists, APInvoiceEntry_Extension.InvoicePOReceiptDel baseMetod) { baseMetod(receipt, list, saveAndAdd, usePOParemeters, keepOrderTaxes, errorIfUnreleasedAPExists); bool?autoCreateInvoice = receipt.AutoCreateInvoice; bool flag = true; if (!(autoCreateInvoice.GetValueOrDefault() == flag & autoCreateInvoice.HasValue)) { return; } DateTime?dueDate; TermsAttribute.CalcTermsDates(SelectFrom <Terms> .Where <Terms.termsID.IsEqual <APInvoice.termsID.FromCurrent> > .View.Select((PXGraph)this.Base), receipt.GetExtension <POReceiptExt>().UsrSuppInvDate, out dueDate, out DateTime? _); this.Base.CurrentDocument.SetValueExt <APInvoice.dueDate>(this.Base.CurrentDocument.Current, (object)dueDate); }
public virtual void POReceipt_ReceiptNbr_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e) { POReceipt row = (POReceipt)e.Row; APInvoice doc = Base.Document.Current; if (row != null && doc != null) { PXResultset <POOrderReceiptLink> receiptLinks = PXSelectGroupBy <POOrderReceiptLink, Where <POOrderReceiptLink.receiptNbr, Equal <Required <POReceipt.receiptNbr> > >, Aggregate <GroupBy <POOrderReceiptLink.curyID> > > .Select(Base, row.ReceiptNbr); if (receiptLinks.Count == 0) { return; } else if (receiptLinks.Count > 1 || ((POOrderReceiptLink)receiptLinks.First()).CuryID != doc.CuryID) { string fieldName = typeof(POReceipt.curyID).Name; PXErrorLevel msgLevel = PXErrorLevel.RowWarning; e.ReturnState = PXFieldState.CreateInstance(e.ReturnState, typeof(String), false, null, null, null, null, null, fieldName, null, null, AP.Messages.APDocumentCurrencyDiffersFromSourcePODocument, msgLevel, null, null, null, PXUIVisibility.Undefined, null, null, null); e.IsAltered = true; } } }
public virtual IEnumerable pOreceiptslist() { APInvoice doc = Base.Document.Current; if (doc?.VendorID == null || doc.VendorLocationID == null || doc.DocType != APDocType.Invoice && doc.DocType != APDocType.DebitAdj) { yield break; } string poReceiptType = doc.DocType == APDocType.Invoice ? POReceiptType.POReceipt : POReceiptType.POReturn; Dictionary <APTran, int> usedReceipt = new Dictionary <APTran, int>(new POReceiptComparer()); int count; foreach (APTran aPTran in Base.Transactions.Cache.Inserted) { if (aPTran.ReceiptNbr != null) { usedReceipt.TryGetValue(aPTran, out count); usedReceipt[aPTran] = count + 1; } } foreach (APTran aPTran in Base.Transactions.Cache.Deleted) { if (aPTran.ReceiptNbr != null && Base.Transactions.Cache.GetStatus(aPTran) != PXEntryStatus.InsertedDeleted) { usedReceipt.TryGetValue(aPTran, out count); usedReceipt[aPTran] = count - 1; } } foreach (APTran aPTran in Base.Transactions.Cache.Updated) { string originalValue = (string)Base.Transactions.Cache.GetValueOriginal <APTran.receiptNbr>(aPTran); if (aPTran.ReceiptNbr != originalValue) { if (originalValue != null) { APTran originTran = new APTran { ReceiptNbr = originalValue }; usedReceipt.TryGetValue(originTran, out count); usedReceipt[originTran] = count - 1; } if (aPTran.ReceiptNbr != null) { usedReceipt.TryGetValue(aPTran, out count); usedReceipt[aPTran] = count + 1; } } } PXSelectBase <POReceipt> cmd = new PXSelectJoinGroupBy < POReceipt, InnerJoin <POReceiptLineS, On <POReceiptLineS.receiptNbr, Equal <POReceipt.receiptNbr> >, LeftJoin <APTran, On <APTran.released, Equal <False>, And <Where <POReceiptLineS.pOAccrualType, Equal <POAccrualType.receipt>, And <APTran.receiptNbr, Equal <POReceiptLineS.receiptNbr>, And <APTran.receiptType, Equal <POReceiptLineS.receiptType>, And <APTran.receiptLineNbr, Equal <POReceiptLineS.lineNbr>, Or <POReceiptLineS.pOAccrualType, Equal <POAccrualType.order>, And <APTran.pOOrderType, Equal <POReceiptLineS.pOType>, And <APTran.pONbr, Equal <POReceiptLineS.pONbr>, And <APTran.pOLineNbr, Equal <POReceiptLineS.pOLineNbr> > > > > > > > > > > > >, Where <POReceipt.hold, Equal <False>, And <POReceipt.released, Equal <True>, And <POReceipt.receiptType, Equal <Required <POReceipt.receiptType> >, And <APTran.refNbr, IsNull, And <POReceiptLineS.unbilledQty, Greater <decimal0>, And <Where <POReceiptLineS.pONbr, Equal <Current <POReceiptFilter.orderNbr> >, Or <Current <POReceiptFilter.orderNbr>, IsNull> > > > > > > >, Aggregate < GroupBy <POReceipt.receiptType, GroupBy <POReceipt.receiptNbr, Sum <POReceiptLineS.receiptQty, Sum <POReceiptLineS.unbilledQty, Count <POReceiptLineS.lineNbr> > > > > > >(Base); if (Base.APSetup.Current.RequireSingleProjectPerDocument == true) { cmd.WhereAnd <Where <POReceipt.projectID, Equal <Current <APInvoice.projectID> > > >(); } if (PXAccess.FeatureInstalled <FeaturesSet.vendorRelations>()) { cmd.Join <LeftJoin <POOrder, On <POOrder.orderType, Equal <POReceiptLineS.pOType>, And <POOrder.orderNbr, Equal <POReceiptLineS.pONbr> > > > >(); cmd.WhereAnd <Where <POReceipt.vendorID, Equal <Current <APInvoice.suppliedByVendorID> >, And <POReceipt.vendorLocationID, Equal <Current <APInvoice.suppliedByVendorLocationID> >, And <Where <POOrder.payToVendorID, IsNull, Or <POOrder.payToVendorID, Equal <Current <APInvoice.vendorID> > > > > > > >(); } else { cmd.WhereAnd <Where <POReceipt.vendorID, Equal <Current <APInvoice.vendorID> >, And <POReceipt.vendorLocationID, Equal <Current <APInvoice.vendorLocationID> > > > >(); } foreach (PXResult <POReceipt, POReceiptLineS, APTran> result in cmd.View.SelectMultiBound(new object[] { doc }, poReceiptType)) { POReceipt receipt = result; APTran aPTran = new APTran { ReceiptNbr = receipt.ReceiptNbr }; if (usedReceipt.TryGetValue(aPTran, out count)) { usedReceipt.Remove(aPTran); if (count < result.RowCount) { yield return(receipt); } } else { yield return(receipt); } } foreach (APTran deletedTran in usedReceipt.Where(_ => _.Value < 0).Select(_ => _.Key)) { yield return(PXSelect <POReceipt, Where <POReceipt.receiptNbr, Equal <Required <APTran.receiptNbr> > > > .SelectSingleBound(Base, new object[] { }, deletedTran.ReceiptNbr) .RowCast <POReceipt>() .First()); } }
private string InsertIntoPOReceipts(POLineItem pPOLine, POReceipt pPOReceipt) { try { cmd.CommandText = @" INSERT INTO [dbo].[POReceipts] ( BusinessUnitCode, BusinessUnit, PONumber, ReceiptNumber, DeliveryDate, ItemId, QuantityOrdered, QuantityReceived, QuantityRemaining, UnitOfMeasure, UnitPrice, TotalPrice, VendorID, Description, POLineNumber, IssueType, CurrencyLineCost, CurrencyUnitCost, LoadedCost, StatusDescription, PackingSlipNum, Status, Tax1, Tax2, Consignment, MatRecTransID ) VALUES ( @BUSINESSUNITCODE, @BUSINESSUNITNAME, @PONUMBER, @RECEIPTNUMBER, @DELIVERYDATE, @ITEMID, @QUANTITYORDERED, @QUANTITYRECEIVED, @QUANTITYREMAINING, @UNITOFMEASURE, @UNITPRICE, @TOTALPRICE, @VENDORID, @DESCRIPTION, @POLINENUMBER, @ISSUETYPE, @CURRENCYLINECOST, @CURRENCYUNITCOST, @LOADEDCOST, @STATUSDESCRIPTION, @PACKINGSLIPNUM, @STATUS, @TAX1, @TAX2, @CONSIGNMENT, @MATRECTRANSID )"; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("@BUSINESSUNITCODE", "2022")); cmd.Parameters.Add(new SqlParameter("@BUSINESSUNITNAME", "Kaiser")); cmd.Parameters.Add(new SqlParameter("@PONUMBER", poheader.ponum == null ? "" : poheader.ponum)); cmd.Parameters.Add(new SqlParameter("@RECEIPTNUMBER", "")); cmd.Parameters.Add(new SqlParameter("@DELIVERYDATE", (object)pPOReceipt.actualdate ?? DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@ITEMID", pPOLine.itemnum == null ? "" : pPOLine.itemnum)); cmd.Parameters.Add(new SqlParameter("@QUANTITYORDERED", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity)); cmd.Parameters.Add(new SqlParameter("@QUANTITYRECEIVED", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity)); cmd.Parameters.Add(new SqlParameter("@QUANTITYREMAINING", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity)); cmd.Parameters.Add(new SqlParameter("@UNITOFMEASURE", pPOLine.orderunit == null ? "" : pPOLine.orderunit)); cmd.Parameters.Add(new SqlParameter("@UNITPRICE", pPOLine.unitcost == null ? 0 : pPOLine.unitcost)); cmd.Parameters.Add(new SqlParameter("@TOTALPRICE", pPOReceipt.loadedcost == null ? 0 : pPOReceipt.loadedcost)); cmd.Parameters.Add(new SqlParameter("@VENDORID", poheader.vendor == null ? "" : poheader.vendor)); cmd.Parameters.Add(new SqlParameter("@DESCRIPTION", pPOReceipt.status_description == null ? "" : pPOReceipt.status_description)); cmd.Parameters.Add(new SqlParameter("@POLINENUMBER", pPOLine.polinenum == null ? 0 : pPOLine.polinenum)); cmd.Parameters.Add(new SqlParameter("@ISSUETYPE", pPOReceipt.issuetype == null ? "" : pPOReceipt.issuetype)); cmd.Parameters.Add(new SqlParameter("@CURRENCYLINECOST", pPOReceipt.currencylinecost == null ? 0 : pPOReceipt.currencylinecost)); cmd.Parameters.Add(new SqlParameter("@CURRENCYUNITCOST", pPOReceipt.currencyunitcost == null ? 0 : pPOReceipt.currencyunitcost)); cmd.Parameters.Add(new SqlParameter("@LOADEDCOST", pPOReceipt.loadedcost == null ? 0 : pPOReceipt.loadedcost)); cmd.Parameters.Add(new SqlParameter("@STATUSDESCRIPTION", pPOReceipt.status_description == null ? "" : pPOReceipt.status_description)); cmd.Parameters.Add(new SqlParameter("@PACKINGSLIPNUM", pPOReceipt.packingslipnum == null ? "" : pPOReceipt.packingslipnum)); cmd.Parameters.Add(new SqlParameter("@STATUS", pPOReceipt.status == null ? "" : pPOReceipt.status)); cmd.Parameters.Add(new SqlParameter("@TAX1", pPOReceipt.tax1 == null ? 0 : pPOReceipt.tax1)); cmd.Parameters.Add(new SqlParameter("@TAX2", pPOReceipt.tax2 == null ? 0 : pPOReceipt.tax2)); cmd.Parameters.Add(new SqlParameter("@CONSIGNMENT", pPOReceipt.consignment == null ? false : pPOReceipt.consignment)); cmd.Parameters.Add(new SqlParameter("@MATRECTRANSID", pPOReceipt.matrectransid == null ? 0 : pPOReceipt.matrectransid)); cmd.ExecuteNonQuery(); } catch (Exception ex) { tr.Rollback(); return("insertion failed (InsertIntoPOReceipts): " + ex.Message); } return("succeeded"); }