Exemplo n.º 1
0
        private static void GetCreditNotesFromServe(LOG_CHANGES changeset)
        {
            var note = WebApiClient.GetCreditNotes(changeset.ListVal).Result;

            if (note == null)
            {
                return;
            }
            note.StateL = LocalStatus.Procesado;

            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.ORPC_SupplierCreditNotes.Include(c => c.RPC1_SupplierCreditNoteDetail)
                          .FirstOrDefault(c => c.IdSupplierCreditNote == changeset.IdL.Value);

            var localDE = db.ORPC_SupplierCreditNotes.Include(c => c.RPC1_SupplierCreditNoteDetail)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.ORPC_SupplierCreditNotes.Add(note);
                    SupplierCreditNoteHelper.SaveTransaction(note);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.ORPC_SupplierCreditNotes.Add(note);
                            SupplierCreditNoteHelper.SaveTransaction(note);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(note);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(note);
                        SupplierCreditNoteHelper.SaveTransaction(note);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.ORPC_SupplierCreditNotes.Add(note);
                    SupplierCreditNoteHelper.SaveTransaction(note);
                }
            }

            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 2
0
        private static void GetGoodIssues(LOG_CHANGES changeset)
        {
            var gi = WebApiClient.GetGoodIssue(changeset.ListVal).Result;

            if (gi == null)
            {
                return;
            }
            gi.StateL = LocalStatus.Procesado;

            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.OIGE_GoodsIssues.Include(c => c.IGE1_GoodsIssueDetail)
                          .FirstOrDefault(c => c.IdGoodIssueL == changeset.IdL.Value);

            var localDE = db.OIGE_GoodsIssues.Include(c => c.IGE1_GoodsIssueDetail)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.OIGE_GoodsIssues.Add(gi);
                    GoodIssuesHelper.SaveTransaction(gi);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.OIGE_GoodsIssues.Add(gi);
                            GoodIssuesHelper.SaveTransaction(gi);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(gi);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(gi);
                        GoodIssuesHelper.SaveTransaction(gi);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.OIGE_GoodsIssues.Add(gi);
                    GoodIssuesHelper.SaveTransaction(gi);
                }
            }

            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 3
0
        private static void GetBusinessPartnerFromServer(LOG_CHANGES changeset)
        {
            var partner = WebApiClient.GetBusinessPartner(changeset.ListVal).Result;

            if (partner == null)
            {
                return;
            }

            var db = ContextFactory.GetDBContext();

            var businessPartner = db.OCRD_BusinessPartner.FirstOrDefault(b => b.CardCode == partner.CardCode);

            if (businessPartner == null)
            {
                db.OCRD_BusinessPartner.Add(partner);
            }

            else
            {
                businessPartner.UpdateModelPropertiesFrom(partner);
            }
            // db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
            db.SaveChanges();
            if (onBussinesPartnerUpdate != null)
            {
                onBussinesPartnerUpdate();
            }
        }
Exemplo n.º 4
0
        private static void GetGroupsFromServer(LOG_CHANGES changeset)
        {
            // Collection.
            var group = WebApiClient.GetItemGroups(changeset.ListVal).Result;

            // TODO implement
        }
Exemplo n.º 5
0
        private static void GetArticle(LOG_CHANGES changeset)
        {
            var p = WebApiClient.GetArticleByKey(changeset.ListVal).Result;

            p.OITW_BranchArticles.ForEach(a => a.LastSyncDateL = DateTime.Now);

            var db = ContextFactory.GetDBContext();

            var current = db.OITM_Articles.Include(a => a.OITW_BranchArticles)
                          .FirstOrDefault(prod => prod.ItemCode == p.ItemCode);

            if (current == null)
            {
                db.OITM_Articles.Add(p);
            }

            else
            {
                current.UpdateModelPropertiesFrom(p);
                if (current.OITW_BranchArticles.Count != p.OITW_BranchArticles.Count)
                {
                    var localIds = current.OITW_BranchArticles
                                   .Select(a => Tuple.Create(a.ItemCode, a.WhsCode))
                                   .ToList();
                    var news =
                        p.OITW_BranchArticles.Where(a => !localIds.Contains(Tuple.Create(a.ItemCode, a.WhsCode)))
                        .ToList();

                    news.ForEach(a => current.OITW_BranchArticles.Add(a));
                }
            }
            // db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 6
0
        public static Document GetDocumentTypeByCod(LOG_CHANGES log)
        {
            lock (Extensions.Locker)
            {
                var db = ContextFactory.GetDBContext();

                return(db.Documents.FirstOrDefault(d => d.ObjType == log.ObjType));
            }
        }
Exemplo n.º 7
0
        private static void GetDownPayments(LOG_CHANGES changeset)
        {
            var downPayment = WebApiClient.GetDownPayment(changeset.ListVal).Result;

            if (downPayment == null)
            {
                return;
            }
            downPayment.StateL = LocalStatus.Procesado;

            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.ODPI_DownPayment.Include(c => c.DPI1_DownPaymentDetail)
                          .FirstOrDefault(c => c.IdDownPayment == changeset.IdL.Value);

            var localDE = db.ODPI_DownPayment.Include(c => c.DPI1_DownPaymentDetail)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.ODPI_DownPayment.Add(downPayment);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.ODPI_DownPayment.Add(downPayment);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(downPayment);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(downPayment);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.ODPI_DownPayment.Add(downPayment);
                }
            }

            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 8
0
        private static void GetPurchaseFromServer(LOG_CHANGES changeset)
        {
            var purchase = WebApiClient.GetPurchase(changeset.ListVal).Result;

            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.OPCH_Purchase.Include(c => c.PCH1_PurchaseDetail)
                          .FirstOrDefault(c => c.IdPurchase == changeset.IdL.Value);

            var localDE = db.OPCH_Purchase.Include(c => c.PCH1_PurchaseDetail)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.OPCH_Purchase.Add(purchase);
                    PurchaseHelper.SaveTransaction(purchase);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.OPCH_Purchase.Add(purchase);
                            PurchaseHelper.SaveTransaction(purchase);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(purchase);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(purchase);
                        PurchaseHelper.SaveTransaction(purchase);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.OPCH_Purchase.Add(purchase);
                    PurchaseHelper.SaveTransaction(purchase);
                }
            }

            // db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 9
0
        //public static bool Upload(string whscode, string filePath)
        //{

        //    var apiRoute = string.Format("api/upload?whscode={0}", whscode);
        //    // Create a progress notification handler
        //    ProgressMessageHandler progress = new ProgressMessageHandler();
        //   // progress.HttpSendProgress += ProgressEventHandler;

        //    // Create an HttpClient and wire up the progress handler
        //    HttpClient client = HttpClientFactory.Create(progress);
        //    client.BaseAddress = new Uri(UrlWebApi);

        //    // Set the request timeout as large uploads can take longer than the default 2 minute timeout
        //    client.Timeout = TimeSpan.FromMinutes(20);

        //    // Open the file we want to upload and submit it
        //    using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize, useAsync: true))
        //    {
        //        // Create a stream content for the file
        //        StreamContent content = new StreamContent(fileStream, BufferSize);

        //        // Create Multipart form data content, add our submitter data and our stream content
        //        MultipartFormDataContent formData = new MultipartFormDataContent();
        //        formData.Add(new StringContent(whscode), "submitter");
        //        formData.Add(content, "filename", Path.GetFileName(filePath));

        //        // Post the MIME multipart form data upload with the file

        //        HttpResponseMessage response = client.PostAsync(apiRoute, formData).Result;

        //        FileResult result =   response.Content.ReadAsAsync<FileResult>().Result;

        //        if (response.IsSuccessStatusCode)
        //        {
        //            Console.WriteLine("{0}Result:{0}  Filename:  {1}{0}  Submitter: {2}", Environment.NewLine,
        //                result.FileNames.FirstOrDefault(), result.Submitter);
        //        }

        //        return result != null;
        //    }
        //}

        #endregion



        public static Task <bool> ConfirmChangeset(LOG_CHANGES changeset)
        {
            return(PostAsync <LOG_CHANGES, bool>("api/Synchronization", changeset));
        }
Exemplo n.º 10
0
        private static void GetTransfersfromServer(LOG_CHANGES changeset)
        {
            var transfer = WebApiClient.GetTransfer(changeset.ListVal).Result;

            if (transfer == null)
            {
                return;
            }

            transfer.StateL = LocalStatus.Procesado;

            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.OWTR_Transfers.Include(c => c.WTR1_TransferDetails)
                          .FirstOrDefault(c => c.IdTransferL == changeset.IdL.Value);

            var localDE = db.OWTR_Transfers.Include(c => c.WTR1_TransferDetails)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.OWTR_Transfers.Add(transfer);
                    TransferHelper.SaveTransaction(transfer);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.OWTR_Transfers.Add(transfer);
                            TransferHelper.SaveTransaction(transfer);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(transfer);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(transfer);
                        TransferHelper.SaveTransaction(transfer);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.OWTR_Transfers.Add(transfer);
                    TransferHelper.SaveTransaction(transfer);
                }
            }

            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 11
0
        private static void GetTransferTransferRequestFromServer(LOG_CHANGES changeset)
        {
            var transfer = WebApiClient.GetTransferRequest(changeset.ListVal).Result;

            if (transfer == null)
            {
                return;
            }
            transfer.StateL = LocalStatus.Procesado;
            var db = ContextFactory.GetDBContext();

            var id = Convert.ToInt32(changeset.ListVal);

            var localId = db.OWTQ_TransferRequest.Include(c => c.WTQ1_TransferRequestDetails)
                          .FirstOrDefault(c => c.IdTransferRequestL == changeset.IdL.Value);

            var localDE = db.OWTQ_TransferRequest.Include(c => c.WTQ1_TransferRequestDetails)
                          .FirstOrDefault(c => c.DocEntry == id);

            if (changeset.IdL.HasValue) // C1
            {
                if (localId == null)    // C3
                {
                    db.OWTQ_TransferRequest.Add(transfer);
                }
                else
                {
                    if (localId.StateL == LocalStatus.Procesado)                     // C4
                    {
                        if (localDE == null || localDE.DocEntry != localId.DocEntry) // C5
                        {
                            db.OWTQ_TransferRequest.Add(transfer);
                        }
                        else
                        {
                            localId.UpdateModelPropertiesFrom(transfer);
                        }
                    }
                    else
                    {
                        localId.UpdateModelPropertiesFrom(transfer);
                    }
                }
            }
            else //  C2 -- El Idl no contenia un valor
            {
                if (localDE == null)
                {
                    db.OWTQ_TransferRequest.Add(transfer);
                }
            }

            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();


            //if (changeset.SyncType == SyncType.Add)
            //{
            //    // Actualizar si Changeset Tiene Idl y no esta procesado localmente

            //    if (changeset.IdL.HasValue)
            //    {
            //        var local =
            //            db.OWTQ_TransferRequest.Include("WTQ1_TransferRequestDetails")
            //            .FirstOrDefault(t => t.IdTransferRequestL == changeset.IdL.Value);

            //        if (local == null)
            //        {
            //            NotifyException(transfer);
            //            db.LOG_CHANGES.Add(changeset);
            //            db.SaveChanges();
            //            return;
            //        }

            //        // Verificar si no esta procesado
            //        if (local.StateL != LocalStatus.Procesado)
            //        {

            //            local.UpdateModelPropertiesFrom(transfer);

            //        }
            //    } // Si el objeto no tiene ID Local
            //    else db.OWTQ_TransferRequest.Add(transfer);
            //}

            //if (changeset.SyncType == SyncType.Update)
            //{
            //    var local =
            //        db.OWTQ_TransferRequest.Include("WTQ1_TransferRequestDetails")
            //        .FirstOrDefault(t => t.DocEntry == transfer.DocEntry);

            //    if (local == null)
            //    {
            //        NotifyException(transfer);
            //        db.LOG_CHANGES.Add(changeset);
            //        db.SaveChanges();
            //        return;
            //    }

            //    if (local.WTQ1_TransferRequestDetails.Count != transfer.WTQ1_TransferRequestDetails.Count)
            //    {
            //        // Remove All Local Details.
            //        local.WTQ1_TransferRequestDetails.ForEach(d=> d.RemoveAndSave());
            //        local.WTQ1_TransferRequestDetails.AddRange(transfer.WTQ1_TransferRequestDetails);
            //        local.UpdateModelPropertiesFrom(transfer,excludeComplexTypes:true);
            //    }
            //    else local.UpdateModelPropertiesFrom(transfer);

            //}
            //db.LOG_CHANGES.Add(changeset);
            //db.SaveChanges();
        }
Exemplo n.º 12
0
        public static void GetSpecialOrdersFromServer(LOG_CHANGES changeset)
        {
            var order = WebApiClient.GetSpecialOrder(changeset.ListVal).Result;

            if (order == null)
            {
                return;
            }
            order.StateL = LocalStatus.Procesado;

            var db = ContextFactory.GetDBContext();

            if (changeset.SyncType == SyncType.Add)
            {
                if (changeset.IdL.HasValue)
                {
                    // Get Local if Local == null NotifyException ()
                    var local =
                        db.ORDR_SpecialOrder.Include("RDR1_SpecialOrderDetail").Include("ATC1_Attachments")
                        .FirstOrDefault(o => o.IdSpecialOrder == changeset.IdL.Value);

                    if (local == null)
                    {
                        NotifyException(order);
                        //db.LOG_CHANGES.Add(changeset);
                        changeset.AddChangeset();
                        return;
                    }
                    // Verfiy != Procesado.
                    if (local.StateL != LocalStatus.Procesado)
                    {
                        local.UpdateModelPropertiesFrom(order);
                    }
                }
                else
                {
                    db.ORDR_SpecialOrder.Add(order);
                }
            }
            if (changeset.SyncType == SyncType.Update)
            {
                var local = db.ORDR_SpecialOrder.Include("RDR1_SpecialOrderDetail").Include("ATC1_Attachments")
                            .FirstOrDefault(o => o.DocEntry == order.DocEntry);

                if (local == null)
                {
                    NotifyException(order);
                    //db.LOG_CHANGES.Add(changeset);
                    changeset.AddChangeset();
                    return;
                }


                if (local.RDR1_SpecialOrderDetail.Count == order.RDR1_SpecialOrderDetail.Count &&
                    local.ATC1_Attachments.Count == order.ATC1_Attachments.Count)
                {
                    local.UpdateModelPropertiesFrom(order);
                }

                if (local.RDR1_SpecialOrderDetail.Count != order.RDR1_SpecialOrderDetail.Count)
                {
                    local.RDR1_SpecialOrderDetail.ForEach(d => d.RemoveAndSave());
                    local.RDR1_SpecialOrderDetail.AddRange(order.RDR1_SpecialOrderDetail);
                    local.UpdateModelPropertiesFrom(order, excludeComplexTypes: true);
                    db.SaveChanges();
                }
                if (local.ATC1_Attachments.Count != order.ATC1_Attachments.Count)
                {
                    local.ATC1_Attachments.ForEach(d => d.RemoveAndSave());
                    local.ATC1_Attachments.AddRange(order.ATC1_Attachments);
                    local.UpdateModelPropertiesFrom(order, excludeComplexTypes: true);
                    db.SaveChanges();
                }
            }
            //db.LOG_CHANGES.Add(changeset);
            changeset.AddChangeset();
        }
Exemplo n.º 13
0
        private static void DoSync(Document doc, LOG_CHANGES changeset)
        {
            //try
            //{


            using (var scope = new TransactionScope(TransactionScopeOption.Required,
                                                    new TransactionOptions()
            {
                Timeout = TimeSpan.FromMinutes(10),
                IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
            }))
            {
                lock (Extensions.Locker)
                {
                    if (doc.DocumentType == typeof(OWTQ_TransferRequest))
                    {
                        GetTransferTransferRequestFromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(OWTR_Transfers))
                    {
                        GetTransfersfromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(ORDR_SpecialOrder))
                    {
                        GetSpecialOrdersFromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(OCRD_BusinessPartner))
                    {
                        GetBusinessPartnerFromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(ORPC_SupplierCreditNotes))
                    {
                        GetCreditNotesFromServe(changeset);
                    }
                    if (doc.DocumentType == typeof(OINV_Sales))
                    {
                        GetSalesFromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(ODPI_DownPayment))
                    {
                        GetDownPayments(changeset);
                    }
                    if (doc.DocumentType == typeof(OIGE_GoodsIssues))
                    {
                        GetGoodIssues(changeset);
                    }
                    if (doc.DocumentType == typeof(OIGN_GoodsReceipt))
                    {
                        GetGoodReceipts(changeset);
                    }
                    if (doc.DocumentType == typeof(OITB_Groups))
                    {
                        GetGroupsFromServer(changeset);                                         // TODO implement
                    }
                    if (doc.DocumentType == typeof(OPCH_Purchase))
                    {
                        GetPurchaseFromServer(changeset);
                    }
                    if (doc.DocumentType == typeof(OITM_Articles))
                    {
                        GetArticle(changeset);
                    }
                    if (doc.DocumentType == typeof(ORIN_ClientCreditNotes))
                    {
                        GetClientCreditNotes(changeset);
                    }
                    ContextFactory.GetDBContext().SaveChanges();
                    scope.Complete();
                }
            }
            if (onSyncItem != null)
            {
                onSyncItem();
            }

            //}
            //catch (DbEntityValidationException ex)
            //{
            //    LoggerHelper.WriteLog(ex);
            //    return false;
            //    throw ex;
            //}
            //catch (Exception ex)
            //{
            //    // TODO show Exception TO User
            //    //ContextFactory.RollBack();
            //    LoggerHelper.WriteLog(ex,"Error En Syncronizacion.");
            //    return false;
            //}
        }