Ejemplo n.º 1
0
 public FacturaDeCompraPOP(ConexionDB DatosConexionDB, int iNumLineas)
 {
     _DatosConexionDB = DatosConexionDB;
     _iNumLineas      = iNumLineas;
     facturaPopCa     = new taPopRcptHdrInsert();
     facturaPopType   = new POPReceivingsType();
 }
Ejemplo n.º 2
0
        /// <summary>
        /// save new receipt
        /// </summary>
        /// <param name="receipt"></param>
        /// <param name="receiptLines"></param>
        /// <returns></returns>
        public OperationResult SaveReceipt(POP10300_Receipt_Work receipt, List <POP10310> receiptLines)
        {
            var operationResult = new OperationResult();

            logger.Debug("Receipt is being created...");

            using (eConnectMethods e = new eConnectMethods())
            {
                try
                {
                    if (receiptLines != null && receiptLines.Count > 0)
                    {
                        taPopRcptLotInsert_ItemsTaPopRcptLotInsert[] lotItems = new taPopRcptLotInsert_ItemsTaPopRcptLotInsert[receiptLines.Count];

                        taPopRcptLineInsert_ItemsTaPopRcptLineInsert[] lineItems = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert[receiptLines.Count];

                        var receiptLineNumber = 16384;
                        var lineNumber        = 0;

                        foreach (var receiptLine in receiptLines)
                        {
                            // Instantiate a taUpdateCreateItemRcd XML node object
                            taPopRcptLotInsert_ItemsTaPopRcptLotInsert receiptLotLine = new taPopRcptLotInsert_ItemsTaPopRcptLotInsert();

                            receiptLotLine.POPRCTNM  = receiptLine.POPRCTNM;
                            receiptLotLine.RCPTLNNM  = receiptLineNumber;
                            receiptLotLine.ITEMNMBR  = receiptLine.ITEMNMBR;
                            receiptLotLine.SERLTNUM  = receiptLine.SERLTNUM;
                            receiptLotLine.SERLTQTY  = receiptLine.QTYSHPPD;
                            receiptLotLine.CREATEBIN = 0;

                            lotItems[lineNumber] = receiptLotLine;

                            // Instantiate a taUpdateCreateItemRcd XML node object
                            taPopRcptLineInsert_ItemsTaPopRcptLineInsert receiptLineItem = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert();

                            //Populate elements of the taUpdateCreateItemRcd XML node object
                            receiptLineItem.POPTYPE  = receiptLine.POPTYPE;
                            receiptLineItem.POPRCTNM = receiptLine.POPRCTNM;
                            receiptLineItem.RCPTLNNM = receiptLineNumber;
                            receiptLineItem.ITEMNMBR = receiptLine.ITEMNMBR;
                            receiptLineItem.VENDORID = receiptLine.VENDORID;
                            receiptLineItem.PONUMBER = receiptLine.PONUMBER;
                            receiptLineItem.VNDITNUM = receiptLine.VNDITNUM;
                            receiptLineItem.QTYSHPPD = receiptLine.QTYSHPPD;
                            receiptLineItem.AUTOCOST = 1;

                            lineItems[lineNumber] = receiptLineItem;

                            receiptLineNumber = receiptLineNumber * 2;

                            lineNumber++;
                        }

                        // Instantiate a taUpdateCreateItemRcd XML node object
                        taPopRcptHdrInsert receiptHeader = new taPopRcptHdrInsert();

                        //Populate elements of the taUpdateCreateItemRcd XML node object
                        receiptHeader.POPRCTNM    = receipt.POPRCTNM;
                        receiptHeader.POPTYPE     = receipt.POPTYPE;
                        receiptHeader.receiptdate = receipt.receiptdate;
                        receiptHeader.BACHNUMB    = receipt.BACHNUMB;
                        receiptHeader.VENDORID    = receipt.VENDORID;

                        // Instantiate a IVItemMasterType schema object
                        POPReceivingsType receipttype = new POPReceivingsType();

                        // Populate the IVItemMasterType schema with the taUpdateCreateItemRcd XML node
                        receipttype.taPopRcptLotInsert_Items  = lotItems;
                        receipttype.taPopRcptLineInsert_Items = lineItems;
                        receipttype.taPopRcptHdrInsert        = receiptHeader;
                        POPReceivingsType[] receiptEntry = { receipttype };

                        // Instantiate an eConnectType schema object
                        eConnectType eConnect = new eConnectType();

                        // Instantiate a Memory Stream object
                        MemoryStream memoryStream = new MemoryStream();

                        // Create an XML serializer object
                        XmlSerializer serializer = new XmlSerializer(eConnect.GetType());

                        // Populate the eConnectType object with the IVItemMasterType schema object
                        eConnect.POPReceivingsType = receiptEntry;

                        ///////////////////////////////////////////////////////////////////////////////

                        // Serialize the eConnectType.
                        serializer.Serialize(memoryStream, eConnect);

                        // Reset the position of the memory stream to the start.
                        memoryStream.Position = 0;

                        // Create an XmlDocument from the serialized eConnectType in memory.
                        XmlDocument xmlDocument = new XmlDocument();
                        xmlDocument.Load(memoryStream);
                        memoryStream.Close();

                        /////////////////////////////////////////////////////////////////////////////////

                        //string xmldocument;

                        //SerializeReceiptHeaderObject("C:\\receipt.xml", receipt, receiptLines);

                        ////Use an XML document to create a string representation of the customer
                        //XmlDocument xmldoc = new XmlDocument();
                        //xmldoc.Load("C:\\receipt.xml");
                        //xmldocument = xmldoc.OuterXml;

                        ////Call eConnect to process the xmldocument.
                        //e.CreateEntity(_dynamicsConnection, xmldocument);

                        //////////////////////////////////////////////////////////////////////////////////

                        // Call eConnect to process the XmlDocument.
                        e.CreateEntity(_dynamicsConnection, xmlDocument.OuterXml);

                        operationResult.Success = true;
                        operationResult.Message = "Success";
                    }
                    else
                    {
                        operationResult.Success = false;
                        operationResult.Message = "No items are attached to receive.";
                    }
                }
                // The eConnectException class will catch eConnect business logic errors.
                // display the error message on the console
                catch (eConnectException exc)
                {
                    Console.Write(exc.ToString());
                    operationResult.Success = false;
                    operationResult.Message = "Error";
                    logger.ErrorFormat("Error saving new receipt: {0} ", exc.ToString());
                }
                // Catch any system error that might occurr.
                // display the error message on the console
                catch (System.Exception ex)
                {
                    Console.Write(ex.ToString());
                    operationResult.Success = false;
                    operationResult.Message = "Error";
                    logger.ErrorFormat("Error saving new receipt: {0} ", ex.ToString());
                }
                finally
                {
                    // Call the Dispose method to release the resources
                    // of the eConnectMethds object
                    e.Dispose();
                }
            } // end of using statement

            return(operationResult);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// serialize recipt
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="receipt"></param>
        /// <param name="receiptLines"></param>
        private static void SerializeReceiptObject(string filename, POP10300_Receipt_Work receipt, List <POP10310> receiptLines)
        {
            try
            {
                // Instantiate an eConnectType schema object
                eConnectType eConnect = new eConnectType();

                taPopRcptLineInsert_ItemsTaPopRcptLineInsert[] lineItems = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert[receiptLines.Count];

                taPopRcptLotInsert_ItemsTaPopRcptLotInsert[] lotItems = new taPopRcptLotInsert_ItemsTaPopRcptLotInsert[receiptLines.Count];

                var receiptLineNumber = 16384;
                var lineNumber        = 0;

                foreach (var receiptLine in receiptLines)
                {
                    // Instantiate a taUpdateCreateItemRcd XML node object
                    taPopRcptLotInsert_ItemsTaPopRcptLotInsert receiptLotLine = new taPopRcptLotInsert_ItemsTaPopRcptLotInsert();

                    receiptLotLine.POPRCTNM  = receiptLine.POPRCTNM;
                    receiptLotLine.RCPTLNNM  = receiptLineNumber;
                    receiptLotLine.ITEMNMBR  = receiptLine.ITEMNMBR;
                    receiptLotLine.SERLTNUM  = receiptLine.SERLTNUM;
                    receiptLotLine.SERLTQTY  = receiptLine.QTYSHPPD;
                    receiptLotLine.CREATEBIN = 0;

                    lotItems[lineNumber] = receiptLotLine;

                    // Instantiate a taUpdateCreateItemRcd XML node object
                    taPopRcptLineInsert_ItemsTaPopRcptLineInsert receiptLineItem = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert();

                    //Populate elements of the taUpdateCreateItemRcd XML node object
                    receiptLineItem.POPTYPE  = receiptLine.POPTYPE;
                    receiptLineItem.POPRCTNM = receiptLine.POPRCTNM;
                    receiptLineItem.RCPTLNNM = receiptLineNumber;
                    receiptLineItem.ITEMNMBR = receiptLine.ITEMNMBR;
                    receiptLineItem.VENDORID = receiptLine.VENDORID;
                    receiptLineItem.PONUMBER = receiptLine.PONUMBER;
                    receiptLineItem.VNDITNUM = receiptLine.VNDITNUM;
                    receiptLineItem.QTYSHPPD = receiptLine.QTYSHPPD;
                    receiptLineItem.AUTOCOST = 1;

                    lineItems[lineNumber] = receiptLineItem;

                    receiptLineNumber = receiptLineNumber * 2;

                    lineNumber++;
                }

                // Instantiate a taUpdateCreateItemRcd XML node object
                taPopRcptHdrInsert receiptHeader = new taPopRcptHdrInsert();

                //Populate elements of the taUpdateCreateItemRcd XML node object
                receiptHeader.POPRCTNM    = receipt.POPRCTNM;
                receiptHeader.POPTYPE     = receipt.POPTYPE;
                receiptHeader.receiptdate = receipt.receiptdate;
                receiptHeader.BACHNUMB    = receipt.BACHNUMB;
                receiptHeader.VENDORID    = receipt.VENDORID;

                // Instantiate a IVItemMasterType schema object
                POPReceivingsType receipttype = new POPReceivingsType();

                // Populate the IVItemMasterType schema with the taUpdateCreateItemRcd XML node
                receipttype.taPopRcptLotInsert_Items  = lotItems;
                receipttype.taPopRcptLineInsert_Items = lineItems;
                receipttype.taPopRcptHdrInsert        = receiptHeader;
                POPReceivingsType[] receiptEntry = { receipttype };

                // Instantiate a Memory Stream object
                MemoryStream memoryStream = new MemoryStream();

                // Create an XML serializer object
                XmlSerializer serializer = new XmlSerializer(eConnect.GetType());

                // Populate the eConnectType object with the IVItemMasterType schema object
                eConnect.POPReceivingsType = receiptEntry;

                // Create objects to create file and write the customer XML to the file
                FileStream    fs     = new FileStream(filename, FileMode.Create);
                XmlTextWriter writer = new XmlTextWriter(fs, new UTF8Encoding());

                // Serialize the eConnectType object to a file using the XmlTextWriter.
                serializer.Serialize(writer, eConnect);
                writer.Close();
            }
            // catch any errors that occur and display them to the console
            catch (System.Exception ex)
            {
                Console.Write(ex.ToString());
            }
        }
        /// <summary>
        /// Con un Receiving Task generar el documento de Purchase Receipt a Generar
        /// </summary>
        /// <param name="recivingTask"></param>
        /// <returns></returns>
        public Boolean CreatePurchaseReceipt(Document receipt, IList<NodeTrace> traceList, bool costZero)
        {
            eConnectType eConnect;

            try
            {

                if (receipt.DocumentLines == null || receipt.DocumentLines.Count == 0)
                {
                    ExceptionMngr.WriteEvent("CreatePurchaseReceipt: No lines to process.", ListValues.EventType.Error, null, null,
                        ListValues.ErrorCategory.ErpConnection);

                    throw new Exception("CreatePurchaseReceipt: No lines to process.");
                }

                if (receipt.Location == null)
                {
                    ExceptionMngr.WriteEvent("CreatePurchaseReceipt: Document Location is missing.", ListValues.EventType.Error, null, null,
                        ListValues.ErrorCategory.ErpConnection);

                    throw new Exception("CreatePurchaseReceipt: Document Location is missing.");
                }

                taPopRcptLineInsert_ItemsTaPopRcptLineInsert[] docLines =
                    new taPopRcptLineInsert_ItemsTaPopRcptLineInsert[receipt.DocumentLines.Count];

                //Create an object that holds XML node object
                taPopRcptLineInsert_ItemsTaPopRcptLineInsert curLine;
                int i = 1;

                //For trak options
                IList<taPopRcptSerialInsert_ItemsTaPopRcptSerialInsert> serialTrack = new List<taPopRcptSerialInsert_ItemsTaPopRcptSerialInsert>();
                IList<taPopRcptLotInsert_ItemsTaPopRcptLotInsert> lotTrack = new List<taPopRcptLotInsert_ItemsTaPopRcptLotInsert>();


                // Next consecutive for a Purchase Receipt
                foreach (DocumentLine dr in receipt.DocumentLines)
                {
                    //Debe ser active, para garantizar que no es Misc, o service Item
                    if (dr.Product.Status.StatusID == EntityStatus.Active)
                    {

                        curLine = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert();

                        //Validate Item/Vendor, GP requires that the Vendor has assigned the ItemNumber 
                        ValidateItemAndVendor(receipt.Vendor.AccountCode, dr.Product.ProductCode);

                        //Validate Item/Location, GP requires that the Location has assigned the ItemNumber 
                        ValidateItemAndLocation(receipt.Location.ErpCode, dr.Product.ProductCode);

                        // Populate Lines            
                        curLine.POPRCTNM = receipt.DocNumber;
                        curLine.POPTYPE = GP_DocType.PR_Shipment;
                        curLine.receiptdate = DateTime.Today.ToString("yyyy-MM-dd");
                        curLine.VENDORID = receipt.Vendor.AccountCode;

                        //Si va a Costo Zero el Costo debe ser enviado en el recibo como ZERO
                        if (costZero)
                        {
                            curLine.AUTOCOST = 0;
                            curLine.EXTDCOST = 0;
                            curLine.EXTDCOSTSpecified = true;
                            curLine.UNITCOST = 0;
                            curLine.UNITCOSTSpecified = true;                           
                        }
                        else
                            curLine.AUTOCOST = 1;                       
                        
                        curLine.ITEMNMBR = dr.Product.ProductCode;
                        curLine.VNDITNUM = dr.AccountItem;
                        curLine.LOCNCODE = dr.Location.ErpCode;
                        curLine.RCPTLNNM = i;
                        curLine.UOFM = dr.Unit.ErpCode;
                        curLine.QTYSHPPD = Decimal.Parse(dr.Quantity.ToString());


                        //Organizando los productos con Serial y Lotcode para cada linea del documento
                        if (dr.Product.ErpTrackOpt > 1 &&  dr.Product.ProductTrack != null)

                            foreach (ProductTrackRelation pt in dr.Product.ProductTrack)
                            {
                                if (pt.TrackOption.RowID == 1 && pt.DisplayName == null)  //Serial
                                    serialTrack = GetReceiptLineSerials(serialTrack, traceList.Where(f => f.PostingDocLineNumber == dr.LineNumber).ToList());

                                else if (pt.TrackOption.RowID == 2 && pt.DisplayName == null) //Lot Code
                                    lotTrack = GetReceiptLineLots(lotTrack, traceList.Where(f => f.PostingDocLineNumber == dr.LineNumber).ToList());
                            }


                        if (!string.IsNullOrEmpty(dr.LinkDocNumber))
                        {
                            curLine.PONUMBER = dr.LinkDocNumber;
                            curLine.POLNENUM = dr.LinkDocLineNumber;
                        }

                        docLines[i - 1] = curLine;
                        i++;
                    }
                }

                //Create a SOPTransactionType schema object and populate its taSopLineIvcInsert_Items poperty
                POPReceivingsType docType = new POPReceivingsType();

                //Adicionado Track Lists
                docType.taPopRcptLineInsert_Items = docLines;
                if (lotTrack.Count > 0)
                    docType.taPopRcptLotInsert_Items = lotTrack.ToArray();

                if (serialTrack.Count > 0)
                    docType.taPopRcptSerialInsert_Items = serialTrack.ToArray();

                //Create a taSopHdrIvcInsert XML node object

                taPopRcptHdrInsert docHdr = new taPopRcptHdrInsert();

                //Populate Header   
                docHdr.BACHNUMB = costZero ? "WMS_LANDING" : receipt.Location.ErpCode + "_" + GPBatchNumber.Receipt;

                docHdr.POPRCTNM = receipt.DocNumber;
                docHdr.POPTYPE = GP_DocType.PR_Shipment;
                docHdr.receiptdate = DateTime.Today.ToString("yyyy-MM-dd");
                docHdr.VENDORID = receipt.Vendor.AccountCode;

                //Define el Auto Cost
                docHdr.AUTOCOST = costZero ? 0 : 1;


                docHdr.NOTETEXT = "WMS DOC#: " + receipt.DocNumber;
                docHdr.VNDDOCNM = receipt.Reference;
                docHdr.DUEDATE = (receipt.Date5 == null) ? "" : receipt.Date5.Value.ToString("yyyy-MM-dd");

                docType.taPopRcptHdrInsert = docHdr;

                POPReceivingsType[] docTypeArray = new POPReceivingsType[1];
                docTypeArray[0] = docType;

                //Create an eConnect XML document object and populate its docType property with
                //the docType schema object
                eConnect = new eConnectType();
                eConnect.POPReceivingsType = docTypeArray;

                //Serialize the XML document to the file
                XmlSerializer serializer = new XmlSerializer(typeof(eConnectType));
                StringWriter writer = new StringWriter();
                serializer.Serialize(writer, eConnect);

                DynamicsGP_ec.SendData(writer.ToString());

                return true;
            }

            catch (Exception ex)
            {
                //ExceptionMngr.WriteEvent("CreatePurchaseReceipt: ", ListValues.EventType.Error, ex, null,
                    //ListValues.ErrorCategory.ErpConnection);

                throw new Exception(WriteLog.GetTechMessage(ex));
            }

        }