Exemple #1
0
        public void Test_Write_Delete_CorrectState(string key)
        {
            var route   = DocumentRoute.Create(TestContext.CurrentContext.Test.Name);
            var address = DocumentAddress.Create(route, key);
            var data    = new byte[] { 1, 2, 3 };

            // act1
            using (var writeStream = store.GetWriteStream(address))
            {
                writeStream.Write(data);
            }

            var keys1 = store.GetAddresses(
                route: route,
                options: DocumentSearchOption.TopLevelOnly
                );
            var contains1 = store.ContainsAddress(address);

            // assert1
            Assert.IsTrue(contains1);
            Assert.IsTrue(keys1.Contains(address));

            // act2
            store.Clear();

            var keys2 = store.GetAddresses(
                route: route,
                options: DocumentSearchOption.TopLevelOnly
                );
            var contains2 = store.ContainsAddress(address);

            // assert2
            Assert.IsFalse(contains2);
            Assert.IsFalse(keys2.Contains(address));
        }
Exemple #2
0
 async Task <IResult <T> > IDocumentStore.GetOrAddAsync <T>(DocumentAddress address,
                                                            Func <DocumentAddress, Task <T> > addDataAsync) where T : class =>
 await Function.ApplyArgs(store.GetOrAddAsync, address, addDataAsync)
 .Init(Catch <T>())
 .Pipe(Retry <T>())
 .Invoke()
 .ConfigureAwait(false);
        private string GetFilePath(DocumentAddress address)
        {
            var path = Path.Combine(
                GetDirectoryPath(address.Route),
                address.Key.Encode()
                );

            return(Path.ChangeExtension(path, fileExtension));
        }
Exemple #4
0
        public IList <DocumentAddress> Select(DocumentAddress data)
        {
            IList <DocumentAddress> datos = new List <DocumentAddress>();

            datos = GetHsql(data).List <DocumentAddress>();
            if (!Factory.IsTransactional)
            {
                Factory.Commit();
            }
            return(datos);
        }
        public void Delete(DocumentAddress address)
        {
            var file = GetFilePath(address);

            if (!File.Exists(file))
            {
                return;
            }

            File.Delete(file);
        }
        public Stream GetReadStream(DocumentAddress address)
        {
            var file = GetFilePath(address);

            if (!File.Exists(file))
            {
                throw new DocumentMissingException(address);
            }

            return(File.OpenRead(file));
        }
        public Stream GetWriteStream(DocumentAddress address)
        {
            var file      = GetFilePath(address);
            var directory = new FileInfo(file).Directory;

            if (!directory.Exists)
            {
                directory.Create();
            }

            return(File.OpenWrite(file));
        }
        public void Equals_Correct()
        {
            DocumentRoute route = DocumentRoute.Create("S1");
            const string  KEY_1 = "K1";
            const string  KEY_2 = "K2";

            var address1 = DocumentAddress.Create(route, KEY_1);
            var address2 = DocumentAddress.Create(route, KEY_2);

            Assert.AreEqual(address1, address1);
            Assert.AreNotEqual(address1, address2);
        }
Exemple #9
0
        private void Update(DocumentAddress address)
        {
            // Arrange
            string random = new Random().Next(111111, 999999).ToString(CultureInfo.InvariantCulture);

            address.Firstname = random;

            // Act
            var result = ApiExplorer.DocumentAddresses.Update(address.Id, address);

            // Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result.Firstname, Is.EqualTo(random));
        }
Exemple #10
0
        public void Test_Routing()
        {
            var          routeRoot = DocumentRoute.Create(TestContext.CurrentContext.Test.Name);
            const string A         = "<|.A.|>";
            var          routeA    = DocumentRoute.Create(A).Prepend(routeRoot);
            const string B         = "<|.B.|>";
            var          routeAB   = DocumentRoute.Create(A, B).Prepend(routeRoot);

            var addressA1  = DocumentAddress.Create(routeA, Guid.NewGuid().ToString());
            var addressAB2 = DocumentAddress.Create(routeAB, Guid.NewGuid().ToString());

            var data = new byte[] { 1, 2, 3 };

            using (var writeStream = store.GetWriteStream(addressA1))
            {
                writeStream.Write(data);
            }

            using (var writeStream = store.GetWriteStream(addressAB2))
            {
                writeStream.Write(data);
            }

            // A
            var addressesA = store.GetAddresses(routeA, DocumentSearchOption.TopLevelOnly);
            // A/*
            var addressesAPlus = store.GetAddresses(routeA, DocumentSearchOption.AllLevels);
            // A/B
            var addressesAB = store.GetAddresses(routeAB, DocumentSearchOption.TopLevelOnly);

            Assert.AreEqual(
                new DocumentAddress[] { addressA1 },
                addressesA.ToArray()
                );

            Assert.AreEqual(
                new DocumentAddress[] { addressA1, addressAB2 },
                addressesAPlus.ToArray()
                );

            Assert.AreEqual(
                new DocumentAddress[] { addressAB2 },
                addressesAB.ToArray()
                );
        }
        private DocumentAddress GetBillAddress(Document doc, string addressCode, string customerCode, short AccnType)
        {
            DocumentAddress billAddress = null;

            AccountAddress accountAddress = new AccountAddress
            {
                Account = new Account {
                    AccountCode = customerCode, BaseType = new AccountType {
                        AccountTypeID = AccnType
                    }
                },
                ErpCode = addressCode
            };

            accountAddress = WType.GetAccountAddress(accountAddress);

            if (accountAddress != null)
            {
                billAddress               = new DocumentAddress();
                billAddress.Document      = doc;
                billAddress.DocumentLine  = null;
                billAddress.Name          = accountAddress.Name;
                billAddress.AddressLine1  = accountAddress.AddressLine1;
                billAddress.AddressLine2  = accountAddress.AddressLine2;
                billAddress.AddressLine3  = accountAddress.AddressLine3;
                billAddress.City          = accountAddress.City;
                billAddress.State         = accountAddress.State;
                billAddress.ZipCode       = accountAddress.ZipCode;
                billAddress.Country       = accountAddress.Country;
                billAddress.Phone1        = accountAddress.Phone1;
                billAddress.Phone2        = accountAddress.Phone2;
                billAddress.Phone3        = accountAddress.Phone3;
                billAddress.ContactPerson = accountAddress.ContactPerson;
                billAddress.AddressType   = AddressType.Billing;
                billAddress.Email         = accountAddress.Email;
                billAddress.CreationDate  = DateTime.Now;
                billAddress.CreatedBy     = WmsSetupValues.SystemUser;
                billAddress.ErpCode       = addressCode;
            }

            return(billAddress);
        }
Exemple #12
0
        public void Test_RoundTripData_Equals()
        {
            var route   = DocumentRoute.Create(TestContext.CurrentContext.Test.Name);
            var address = DocumentAddress.Create(route, Guid.NewGuid().ToString());
            var data    = new byte[] { 1, 2, 3 };

            using (var writeStream = store.GetWriteStream(address))
            {
                writeStream.Write(data);
            }

            var buffer = new byte[data.Length];

            using (var readStream = store.GetReadStream(address))
            {
                readStream.Read(buffer, 0, (int)readStream.Length);
            }

            Assert.AreEqual(buffer, data);
        }
        private static DocumentAddress GetAddress(string path)
        {
            var fileName = Path
                           .GetFileName(path);

            var segments = path
                           .Split(Path.DirectorySeparatorChar)
                           .Except(new[] { string.Empty, fileName })
                           .ToArray();

            var route = DocumentRoute
                        .Create(segments)
                        .Decode();

            var fileNameTrimmed = Path
                                  .GetFileNameWithoutExtension(fileName);

            var key = DocumentKey
                      .Create(fileNameTrimmed)
                      .Decode();

            return(DocumentAddress
                   .Create(route, key));
        }
Exemple #14
0
 private DocumentAddress TranslateOut(DocumentAddress address) =>
 address.MapRoute(translateOut);
Exemple #15
0
 private DocumentAddress TranslateIn(DocumentAddress address) =>
 address.MapRoute(translateIn);
 /// <summary>
 /// PUT api/IssuedInvoices/{id}/PurchaserDocumentAddress
 /// Method Updates contact informations of the purchaser.
 /// </summary>
 public DocumentAddress UpdatePurchaserDocumentAddress(int invoiceId, DocumentAddress address)
 {
     return(Put <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + invoiceId + "/PurchaserDocumentAddress", address));
 }
        void View_CreateMergedDocument(object sender, EventArgs e)
        {

            if (string.IsNullOrEmpty(View.DtmDOB.Text))
            {
                Util.ShowError("Date of Board DOB is required.");
                return;
            }

            if (string.IsNullOrEmpty(View.DtmIPS.Text))
            {
                Util.ShowError("ExitIPS Date is required.");
                return;
            }

            //if (string.IsNullOrEmpty(View.UcPort.Text))
            //{
            //    Util.ShowError("Delivery Port is required.");
            //    return;
            //}

            if (View.CboShipTo.SelectedItem == null)
            {
                Util.ShowError("Ship to Address is required.");
                return;
            }


            AccountAddress curAddr = View.CboShipTo.SelectedItem as AccountAddress;

            /*
            string port="",voyage="";

            if (View.CboExitIps.SelectedItem != null)
            {
                ShowData portAndVoyage = ((ShowData)View.CboExitIps.SelectedItem);
                string[] data = portAndVoyage.DataValue.Split(">>".ToCharArray());

                try
                {
                    if (portAndVoyage != null)
                    {
                        port = data[2].Trim();
                        voyage = data[4].Trim();
                    }
                }
                catch { }
            }
            */


            Document document = new Document
            {
                DocType = new DocumentType { DocTypeID = SDocType.MergedSalesOrder },
                CreatedBy = App.curUser.UserName,
                CreationDate = DateTime.Now,
                Location = App.curLocation,
                Company = App.curCompany,
                IsFromErp = true,
                CrossDocking = false,
                Date1 = DateTime.Now,
                UseAllocation = true,
                //Guarda el ShrtAge - BACKORDER OR CANCEL
                CustPONumber = "", //View.CboToDo.SelectedIndex == 0 ? ShortAge.BackOrder : ShortAge.Cancel,
                Customer = View.Model.Customer,

                Date3 = DateTime.Parse(View.DtmDOB.Text), //DOB
                Date4 = DateTime.Parse(View.DtmIPS.Text), //EXIT IPS       
                Notes =  View.RPort.Text, //port, //View.UcPort.Text,
                Reference = View.RVoyage.Text, //View.CboVoyage.SelectedItem != null ? ((ShowData)View.CboVoyage.SelectedItem).DataValue : ""
                Comment = View.TxtComments.Text
            };

            //Address.
            DocumentAddress selectedAddress = new DocumentAddress
            {
                AddressLine1 = curAddr.AddressLine1,
                AddressLine2 = curAddr.AddressLine2,
                AddressLine3 = curAddr.AddressLine3,
                AddressType = AddressType.Shipping,
                City = curAddr.City,
                ContactPerson = curAddr.ContactPerson,
                Country = curAddr.Country,
                CreatedBy = App.curUser.UserName,
                CreationDate = DateTime.Now,
                Name = curAddr.Name,
                Phone1 = curAddr.Phone1,
                Phone2 = curAddr.Phone2,
                State = curAddr.State,
                ZipCode = curAddr.ZipCode
            };


            try
            {
                document = service.CreateMergedDocument(document, View.Model.SelectedLines.ToList(), null, //View.Model.Pickers
                    new List<DocumentAddress> { selectedAddress });

                //Refresh document and line available.
                //LoadAccountDocuments(View.Model.Customer.AccountID, (View.ChkFilter.IsChecked == true ? true : false), false);

                ResetTab();

                Util.ShowMessage("Merged Document #" + document.DocNumber + " was created.\nTo process document please go to Shipping Process.");
                

            }
            catch (Exception ex)
            {
                Util.ShowError("Document could not be created.\n" + ex.Message);
            }


            try
            {
                //Open PickTicket for Merged Order. - Document to print
                UtilWindow.ShowDocument(document.DocType.Template, document.DocID, "", false);
            }
            catch (Exception ex)
            {
                Util.ShowError("Pick Ticket could not be displayed.\n" + ex.Message);
            }


        }
 public DocumentAddress SaveDocumentAddress(DocumentAddress data)
 {
     try {
     SetService();  return SerClient.SaveDocumentAddress(data); }
     finally
     {
         SerClient.Close();
         if (SerClient.State == CommunicationState.Faulted)
         SerClient.Abort(); 
     }
 }
Exemple #19
0
 /// <summary>
 /// PUT api/Receivedinvoices/{id}/MyDocumentAddress
 /// Method Updates contact informations of the purchaser.
 /// </summary>
 public async Task <DocumentAddress> UpdateMyDocumentAddressAsync(int invoiceId, DocumentAddress documentAddress)
 {
     return(await PutAsync <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + invoiceId + "/MyDocumentAddress", documentAddress));
 }
Exemple #20
0
 public Stream GetWriteStream(DocumentAddress address) =>
 source.GetWriteStream(TranslateIn(address));
 /// <summary>
 /// PUT api/Receivedinvoices/{id}/MyDocumentAddress
 /// Method Updates contact informations of the purchaser.
 /// </summary>
 public DocumentAddress UpdateMyDocumentAddress(int invoiceId, DocumentAddress documentAddress)
 {
     return(Put <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + invoiceId + "/MyDocumentAddress", documentAddress));
 }
 public bool ContainsAddress(DocumentAddress address) =>
 File.Exists(GetFilePath(address));
        void View_CreateMergedDocument(object sender, EventArgs e)
        {

            if (View.CboShipTo.SelectedItem == null)
            {
                Util.ShowError("Ship to Address is required.");
                return;
            }


            AccountAddress curAddr = View.CboShipTo.SelectedItem as AccountAddress;
            Document document;

            if (View.Model.CurOpenDoc == null || View.Model.CurOpenDoc.DocID == 0)
            {
                document = new Document
                {
                    DocType = new DocumentType { DocTypeID = SDocType.MergedSalesOrder },
                    CreatedBy = App.curUser.UserName,
                    CreationDate = DateTime.Now,
                    Location = App.curLocation,
                    Company = App.curCompany,
                    IsFromErp = true,
                    CrossDocking = false,
                    Date1 = DateTime.Now,
                    UseAllocation = true,
                    //Guarda el ShrtAge - BACKORDER OR CANCEL
                    CustPONumber = "", //View.CboToDo.SelectedIndex == 0 ? ShortAge.BackOrder : ShortAge.Cancel,
                    Customer = View.Model.Customer,
                    Comment = View.TxtComments.Text,
                    UserDef1 = curAddr.AddressID.ToString()
                };
            }
            else
            {
                document = View.Model.CurOpenDoc;
                document.Comment = View.TxtComments.Text;
                document.UserDef1 = curAddr.AddressID.ToString();
            }


            //Address.
            DocumentAddress selectedAddress = new DocumentAddress
            {
                AddressLine1 = curAddr.AddressLine1,
                AddressLine2 = curAddr.AddressLine2,
                AddressLine3 = curAddr.AddressLine3,
                AddressType = AddressType.Shipping,
                City = curAddr.City,
                ContactPerson = curAddr.ContactPerson,
                Country = curAddr.Country,
                CreatedBy = App.curUser.UserName,
                CreationDate = DateTime.Now,
                Name = curAddr.Name,
                Phone1 = curAddr.Phone1,
                Phone2 = curAddr.Phone2,
                State = curAddr.State,
                ZipCode = curAddr.ZipCode
            };


            try
            {
                document = service.CreateMergedDocumentV2(document, View.Model.SelectedLines.ToList(), null, //View.Model.Pickers
                    new List<DocumentAddress> { selectedAddress });

                View.Model.CurOpenDoc = document;
                View.Model.SelectedLines = service.GetDocumentLine(new DocumentLine { Document = new Document { DocID = View.Model.CurOpenDoc.DocID } });
                View.DgSelected.Items.Refresh();
                View.ExpAddinfo.IsEnabled = true;

                ResetTab();

                Util.ShowMessage("Merged Document #" + document.DocNumber + " was saved.\nTo process document please go to Shipping Process.");
                

            }
            catch (Exception ex)
            {
                Util.ShowError("Document could not be saved.\n" + ex.Message);
            }

        }
        private void ProcessDocuments(IList <Document> list, Company company)
        {
            if (list == null)
            {
                return;
            }

            Document     qDoc;
            DocumentLine curLine;

            Factory.Commit();
            Factory.IsTransactional = true;
            Status cancell = WType.GetStatus(new Status {
                StatusID = DocStatus.Cancelled
            });
            string flag = "";

            //pregunta si sobre escribe las cantidades ya guardadas con las nuevas del ERP
            string overWriteQtys = "T";

            try { overWriteQtys = GetCompanyOption(company, "OVERWQTY"); }
            catch { overWriteQtys = "T"; }



            int i, y;

            foreach (Document e in list)
            {
                try
                {
                    flag = "Document";

                    qDoc = new Document
                    {
                        DocNumber = e.DocNumber,
                        //DocType = new DocumentType { DocTypeID = e.DocType.DocTypeID },
                        Company = new Company {
                            CompanyID = e.Company.CompanyID
                        }
                    };

                    //Evalua si el documento ya existe
                    IList <Document> exList = Factory.DaoDocument().Select(qDoc);
                    e.ModDate    = DateTime.Now;
                    e.ModifiedBy = WmsSetupValues.SystemUser;
                    Factory.Commit();

                    //Si No existe
                    if (exList.Count == 0)
                    {
                        e.CreationDate = DateTime.Now;
                        e.CreatedBy    = string.IsNullOrEmpty(e.CreatedBy) ? WmsSetupValues.SystemUser : e.CreatedBy;
                        Factory.DaoDocument().Save(e);
                        Factory.Commit();
                    }
                    else
                    {
                        //Si el documento esta completado no puede ser actualizado por el DEL ERP
                        //13 Oct 2009
                        //if (exList.First().DocStatus.StatusID == DocStatus.Completed)
                        //continue;

                        //Si el last change del document e sdiferente de nulo y no es mayor al ultimo las change
                        if (exList.First().LastChange != null && exList.First().LastChange >= e.LastChange)
                        {
                            continue;
                        }

                        //Console.WriteLine("Document:" + e.DocNumber);

                        //Valores que no pueden cambiar asi se reciban de nuevo del ERP
                        e.DocID        = exList.First().DocID;
                        e.CreationDate = exList.First().CreationDate;
                        e.CreatedBy    = exList.First().CreatedBy;
                        e.Priority     = exList.First().Priority;
                        e.Notes        = exList.First().Notes;
                        e.CrossDocking = exList.First().CrossDocking;

                        if (!string.IsNullOrEmpty(exList.First().Comment))
                        {
                            e.Comment = exList.First().Comment;
                        }

                        e.PickMethod   = exList.First().PickMethod;
                        e.AllowPartial = exList.First().AllowPartial;
                        e.ModDate      = DateTime.Now;
                        e.ModifiedBy   = e.CreatedBy;

                        //Conserva el status si el actual es mayor al que viene del el ERP.
                        if (exList.First().DocStatus.StatusID > e.DocStatus.StatusID)
                        {
                            e.DocStatus = exList.First().DocStatus;
                        }


                        flag = "Address";

                        #region DocAddress
                        if (e.DocumentAddresses != null)
                        {
                            //Evaluar los document Address
                            i = 0;
                            DocumentAddress curAddr;
                            foreach (DocumentAddress addr in e.DocumentAddresses)
                            {
                                curAddr          = new DocumentAddress();
                                curAddr.Document = new Document {
                                    DocID = e.DocID
                                };
                                curAddr.Name         = addr.Name;
                                curAddr.DocumentLine = new DocumentLine {
                                    LineID = -1
                                };
                                IList <DocumentAddress> listAddrs = Factory.DaoDocumentAddress().Select(curAddr);
                                Factory.Commit();

                                if (listAddrs.Count > 0)
                                {
                                    e.DocumentAddresses[i].ModDate      = DateTime.Now;
                                    e.DocumentAddresses[i].ModifiedBy   = WmsSetupValues.SystemUser;
                                    e.DocumentAddresses[i].RowID        = listAddrs.First().RowID;
                                    e.DocumentAddresses[i].CreationDate = listAddrs.First().CreationDate;
                                    e.DocumentAddresses[i].CreatedBy    = listAddrs.First().CreatedBy;
                                }
                                else
                                {
                                    e.DocumentAddresses[i].CreationDate = DateTime.Now;
                                    e.DocumentAddresses[i].CreatedBy    = WmsSetupValues.SystemUser;
                                }

                                i++;
                            }
                        }

                        //Factory.DaoDocument().Update(e);

                        #endregion


                        flag = "Lines";
                        //Evaluar los document Lines
                        #region DocLines

                        if (e.DocumentLines != null)
                        {
                            IList <DocumentLine> currentLines = Factory.DaoDocumentLine().Select(new DocumentLine {
                                Document = new Document {
                                    DocID = e.DocID
                                }
                            });

                            //Elimina la lineas que no sean de procesos originale del ERP
                            //Para recrealas en pasos posteriores
                            if (currentLines != null && currentLines.Count > 0)
                            {
                                //foreach (DocumentLine curxLine in currentLines.Where(f=>f.Note != "1" && f.Note != "2" && f.LinkDocLineNumber == 0 ))
                                foreach (DocumentLine curxLine in currentLines.Where(f => f.LinkDocLineNumber <= 0))
                                {
                                    //Borra las lineas que no existan ya y que no sean de tipo kit assembly.
                                    //if (!e.DocumentLines.Any(f => f.LineNumber == curxLine.LineNumber || ((f.Note == "1" || f.Note == "2") && f.LinkDocLineNumber > 0)))

                                    //Console.WriteLine("\t" + curxLine.LineNumber);
                                    if (!e.DocumentLines.Any(f => f.LineNumber == curxLine.LineNumber))
                                    {
                                        //if (curxLine.Note != "1" && curxLine.Note != "2" && curxLine.LinkDocLineNumber == 0)
                                        Factory.DaoDocumentLine().Delete(curxLine);
                                        //Console.WriteLine("\tDeleted " + curxLine.LineNumber);
                                    }
                                    //curxLine.LineStatus = cancell;
                                    //Factory.DaoDocumentLine().Update(curxLine);
                                }

                                Factory.Commit();
                            }



                            i = 0;
                            IList <DocumentLine> linesToRemove = new List <DocumentLine>();

                            foreach (DocumentLine line in e.DocumentLines)
                            {
                                curLine = new DocumentLine {
                                    Document = new Document {
                                        DocID = e.DocID
                                    }, LineNumber = line.LineNumber
                                };

                                IList <DocumentLine> listLines = Factory.DaoDocumentLine().Select(curLine);
                                Factory.Commit();

                                //Console.WriteLine(e.DocNumber + "," + e.DocID + "," + line.LineNumber + "," + listLines.Count.ToString());

                                if (listLines.Count > 0)
                                {
                                    //if (listLines.First().LineStatus.StatusID == DocStatus.InProcess || listLines.First().LineStatus.StatusID == DocStatus.Completed)
                                    if (listLines.First().LineStatus.StatusID != DocStatus.New)
                                    {
                                        linesToRemove.Add(e.DocumentLines[i]);
                                        i++;
                                        continue;
                                    }

                                    e.DocumentLines[i].ModDate           = DateTime.Now;
                                    e.DocumentLines[i].ModifiedBy        = WmsSetupValues.SystemUser;
                                    e.DocumentLines[i].LineID            = listLines.First().LineID;
                                    e.DocumentLines[i].CreationDate      = listLines.First().CreationDate;
                                    e.DocumentLines[i].CreatedBy         = listLines.First().CreatedBy;
                                    e.DocumentLines[i].QtyShipped        = listLines.First().QtyShipped;
                                    e.DocumentLines[i].LinkDocLineNumber = listLines.First().LinkDocLineNumber;
                                    e.DocumentLines[i].LinkDocNumber     = listLines.First().LinkDocNumber;

                                    if (overWriteQtys.Equals("F"))
                                    {
                                        if (e.DocumentLines[i].QtyAllocated > 0 && listLines.First().QtyAllocated == 0)
                                        {
                                            e.DocumentLines[i].QtyAllocated = listLines.First().QtyAllocated;
                                        }

                                        if (e.DocumentLines[i].QtyBackOrder > 0 && listLines.First().QtyBackOrder == 0)
                                        {
                                            e.DocumentLines[i].QtyBackOrder = listLines.First().QtyBackOrder;
                                        }

                                        if (e.DocumentLines[i].QtyCancel > 0 && listLines.First().QtyCancel == 0)
                                        {
                                            e.DocumentLines[i].QtyCancel = listLines.First().QtyCancel;
                                        }
                                    }


                                    #region Document Line Address
                                    //Evaluar los document Line Address
                                    if (line.DocumentLineAddresses != null)
                                    {
                                        y = 0;
                                        DocumentAddress curLineAddr;
                                        foreach (DocumentAddress lineAddr in line.DocumentLineAddresses)
                                        {
                                            curLineAddr          = new DocumentAddress();
                                            curLineAddr.Document = new Document {
                                                DocID = line.Document.DocID
                                            };
                                            curLineAddr.DocumentLine = line;
                                            curLineAddr.Name         = lineAddr.Name;
                                            IList <DocumentAddress> listLineAddrs = Factory.DaoDocumentAddress().Select(curLineAddr);
                                            Factory.Commit();

                                            if (listLineAddrs.Count > 0)
                                            {
                                                line.DocumentLineAddresses[y].ModDate      = DateTime.Now;
                                                line.DocumentLineAddresses[y].ModifiedBy   = WmsSetupValues.SystemUser;
                                                line.DocumentLineAddresses[y].RowID        = listLineAddrs.First().RowID;
                                                line.DocumentLineAddresses[y].CreationDate = listLineAddrs.First().CreationDate;
                                                line.DocumentLineAddresses[y].CreatedBy    = listLineAddrs.First().CreatedBy;
                                            }
                                            else
                                            {
                                                line.DocumentLineAddresses[y].CreationDate = DateTime.Now;
                                                line.DocumentLineAddresses[y].CreatedBy    = WmsSetupValues.SystemUser;
                                            }

                                            y++;
                                        }
                                    }
                                    #endregion
                                }
                                else
                                {
                                    e.DocumentLines[i].CreationDate = DateTime.Now;
                                    e.DocumentLines[i].CreatedBy    = WmsSetupValues.SystemUser;
                                }

                                i++;
                            }

                            //Remueve las lineas que no van a ser procesadas.
                            foreach (DocumentLine lr in linesToRemove)
                            {
                                e.DocumentLines.Remove(lr);
                            }
                        }
                        #endregion

                        flag = "Update Document";


                        Factory.DaoDocument().Update(e);
                        Factory.Commit();
                    }

                    flag = "Explode Kit";
                    //Incluido Mayo 14 de 2009 Evalua si el documento de Venta tiene lineas de assembly y debe mostrar
                    //Los componentes
                    //e.DocType.DocClass.DocClassID == SDocClass.Shipping - Removido ON Sep 17/09
                    //Console.WriteLine("\tDocument Before Explode:" + e.DocNumber);
                    if (e.DocType.DocTypeID == SDocType.SalesOrder && GetCompanyOption(e.Company, "SHOWCOMP").Equals("T"))
                    {
                        //Console.WriteLine("\tDocument Explode:" + e.DocNumber);
                        ExplodeKitAssemblyComponents(e, true);
                    }


                    //Incluido Mayo 26 de 2009 Evalua si el documento de Return tiene lineas de assembly y debe mostrar
                    //Los componentes, pero no recibirlos, recibe el asembli, por eso el parametro en false.
                    if (e.DocType.DocTypeID == SDocType.Return && GetCompanyOption(e.Company, "RETURNCOMP").Equals("T"))
                    {
                        ExplodeKitAssemblyComponents(e, false);
                    }
                }
                catch (Exception ex)
                {
                    Factory.Rollback();
                    if (e.DocType.DocTypeID != SDocType.KitAssemblyTask) //&& !ex.Message.Contains("Problem updating the record.")
                    {
                        ExceptionMngr.WriteEvent("ProcessDocuments:" + flag + ":" + e.DocNumber, ListValues.EventType.Fatal, ex, null, ListValues.ErrorCategory.Business);
                    }
                    //throw;
                }
            }
        }
Exemple #25
0
        //Obtiene el detalle de label y entrega el dataset
        public static DataSet GetReportDataset(IList <Label> labelList, int quantity)
        {
            try
            {
                ReportDetailFormat         detail;
                IList <ReportDetailFormat> detailList = new List <ReportDetailFormat>();
                //string barcodeURL = App.curCompany.WebURL + "/"+ WmsSetupValues.BarcodeDir + "/";
                //int i = 1;
                string notes = "";

                int seq = 1;
                foreach (Label label in labelList)
                {
                    detail = new ReportDetailFormat();

                    if (label.Product != null)
                    {
                        detail.ProductCode        = label.Product.ProductCode;
                        detail.ProductDescription = label.Product.Name;
                        detail.Weight             = label.Product.Weight * label.StartQty;
                    }

                    notes = (label.Notes != null) ? label.Notes : "";

                    if (label.Printed == true)
                    {
                        try { detail.Unit = notes.Split(',')[0].Trim(); }
                        catch { }
                        detail.QtyOrder = label.StartQty; //Aqui guardan las logisitcas las hijas que contienen unas vez se imprimen
                    }
                    else
                    {
                        detail.Unit     = label.Unit.Name;
                        detail.QtyOrder = label.CurrQty;
                    }


                    //detail.BarcodeProduct = label.Product.ProductCode;
                    detail.BarcodeLabel = label.Barcode;
                    detail.Lote         = (label.LotCode != null) ? label.LotCode : "";
                    detail.Date1        = (label.ExpirationDate != null) ? label.ExpirationDate.Value.ToShortDateString() : "";
                    detail.Printed      = DateTime.Today.ToString("MM/dd/yyyy hh:mm:ss");
                    detail.Serial       = (label.SerialNumber != null) ? label.SerialNumber : "";
                    detail.Notes        = notes;
                    detail.PrintLot     = (label.PrintingLot != null) ? label.PrintingLot : "";
                    detail.UserName     = label.CreatedBy;
                    detail.LogisticNote = ""; // (label.IsLogistic == true) ? "** LOGISTIC **" : "";



                    //Si el Label es de tipo Custom Label, Ejecuta un proceso adicional.
                    //JM 10 de Junio de 2009
                    if (label.LabelType.DocTypeID == LabelType.CustomerLabel)
                    {
                        //For Packages
                        detail.DocNumber = (label.ShippingDocument != null) ? label.ShippingDocument.DocNumber : "";

                        //Sequence
                        try { detail.PrintLot = seq.ToString() + " / " + labelList.Count(); }
                        catch { }

                        //Weight
                        try { detail.Weight = label.DocumentPackages[0].Weight; }
                        catch { }

                        //Dimemsion
                        try { detail.Dimension = label.DocumentPackages[0].Dimension; }
                        catch { }


                        //Pieces
                        try { detail.Pieces = label.DocumentPackages[0].Pieces; }
                        catch { }


                        //Shipping Address
                        try
                        {
                            DocumentAddress shipAddr = (new WMSServiceClient()).GetDocumentAddress(
                                new DocumentAddress {
                                Document = label.ShippingDocument, AddressType = AddressType.Shipping
                            })
                                                       .Where(f => f.DocumentLine == null).First();

                            detail.ContactPerson = shipAddr.Name;  //shipAddr.ContactPerson;

                            //detail.ShipAddress = shipAddr.Name + "\n";
                            detail.ShipAddress  = shipAddr.AddressLine1 + " " + shipAddr.AddressLine2 + "\n";
                            detail.ShipAddress += shipAddr.City + ", " + shipAddr.State + " " + shipAddr.ZipCode + ", ";
                            detail.ShipAddress += shipAddr.Country + "\n";
                            detail.ShipAddress += shipAddr.ContactPerson;
                        }
                        catch { }
                    }



                    detailList.Add(detail);
                    seq++;

                    //if (i++ >= quantity)
                    //    break;
                }

                //Add Header to DataSet
                XmlSerializer xmlSerializer;
                StringWriter  writer = new StringWriter();

                DataSet dd = new DataSet("Details");
                xmlSerializer = new XmlSerializer(detailList.ToArray().GetType());  //  detailList.GetType()
                xmlSerializer.Serialize(writer, detailList.ToArray());
                StringReader reader = new StringReader(writer.ToString());
                dd.ReadXml(reader);
                dd.Tables[0].TableName = "Details";
                return(dd);
            }
            catch { return(null); }
        }
 public void DeleteDocumentAddress(DocumentAddress data)
 {
     try {
     SetService();  SerClient.DeleteDocumentAddress(data); }
     finally
     {
         SerClient.Close();
         if (SerClient.State == CommunicationState.Faulted)
         SerClient.Abort(); 
     }
 }
Exemple #27
0
 public void Delete(DocumentAddress address) =>
 source.Delete(TranslateIn(address));
 /// <summary>
 /// PUT api/Receivedinvoices/{id}/SupplierPurchaserDocumentAddress
 /// Method Updates contact informations of the supplier.
 /// </summary>
 public DocumentAddress UpdateSupplierPurchaserDocumentAddress(int invoiceId, DocumentAddress documentAddress)
 {
     return(Put <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + invoiceId + "/SupplierPurchaserDocumentAddress", documentAddress));
 }
Exemple #29
0
 public bool ContainsAddress(DocumentAddress address) =>
 source.ContainsAddress(TranslateIn(address));
 /// <summary>
 /// PUT api/DocumentAddresses/{id}
 /// Method updates contact information on the invoice by DocumentAddressId.
 /// </summary>
 public DocumentAddress Update(int documentAddressId, DocumentAddress model)
 {
     return(Put <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + documentAddressId, model));
 }
Exemple #31
0
 /// <summary>
 /// PUT api/IssuedInvoices/{id}/PurchaserDocumentAddress
 /// Method Updates contact informations of the purchaser.
 /// </summary>
 public async Task <DocumentAddress> UpdatePurchaserDocumentAddressAsync(int invoiceId, DocumentAddress address)
 {
     return(await PutAsync <DocumentAddress, DocumentAddress>(ResourceUrl + "/" + invoiceId + "/PurchaserDocumentAddress", address));
 }
Exemple #32
0
 public DataChannel(IDataStore router, DocumentAddress address)
 {
     this.store   = router ?? throw new ArgumentNullException(nameof(router));
     this.address = address;
 }
Exemple #33
0
 async Task <IResult <Unit> > IDocumentStore.PutAsync <T>(DocumentAddress address, T data) where T : class =>
 await Function.ApplyArgs(store.PutAsync, address, data)
 .Init(Catch <Unit>())
 .Pipe(Retry <Unit>())
 .Invoke()
 .ConfigureAwait(false);
 void IDataStore.Delete(DocumentAddress address) =>