Esempio n. 1
0
        /// <summary>
        /// save new receivable transaction
        /// </summary>
        /// <param name="receivable"></param>
        /// <returns></returns>
        public OperationResult SaveReceivableTransaction(RM20101 receivable)
        {
            var operationResult = new OperationResult();

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

            using (eConnectMethods e = new eConnectMethods())
            {
                try
                {
                    // Instantiate a taPMTransactionInsert XML node object
                    taRMTransaction transaction = new taRMTransaction();

                    //Populate elements of the taUpdateCreateItemRcd XML node object
                    transaction.RMDTYPAL = receivable.RMDTYPAL;
                    transaction.DOCNUMBR = receivable.DOCNUMBR;
                    transaction.DOCDATE  = receivable.DOCDATE.ToShortDateString();
                    transaction.BACHNUMB = receivable.BACHNUMB;
                    transaction.CUSTNMBR = receivable.CUSTNMBR;
                    transaction.DOCAMNT  = receivable.DOCAMNT;
                    transaction.SLSAMNT  = receivable.SLSAMNT;

                    // Instantiate a PMTransactionType schema object
                    RMTransactionType transactiontype = new RMTransactionType();

                    // Populate the PMTransactionType schema with the taPMTransactionInsert XML node
                    transactiontype.taRMTransaction = transaction;
                    RMTransactionType[] receivableTransaction = { transactiontype };

                    // 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 PMTransactionType schema object
                    eConnect.RMTransactionType = receivableTransaction;

                    // 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();

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

                    operationResult.Success = true;
                    operationResult.Message = "Success";
                }
                // 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 payables transaction: {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 payables transaction: {0} ", ex.ToString());
                }
                finally
                {
                    // Call the Dispose method to release the resources
                    // of the eConnectMethds object
                    e.Dispose();
                }
            } // end of using statement

            return(operationResult);
        }
        /// <summary>
        /// Set Header Values
        /// <param name="transaction"></param>
        /// <param name="DOCNUMBR"></param>
        /// </summary>
        private taRMTransaction SetTransactionValues(RMTransactionHeader transaction, string DOCNUMBR)
        {
            try
            {
                var rmTransaction = new taRMTransaction
                {
                    RMDTYPAL = transaction.RMDTYPAL,
                    DOCNUMBR = transaction.DOCNUMBR,
                    //DOCDATE = transaction.DOCDATE.ToString("dd/MM/yyyy"),
                    DOCDATE  = transaction.DOCDATE.ToString("yyyy-MM-dd"),
                    BACHNUMB = transaction.BACHNUMB,
                    CUSTNMBR = transaction.CUSTNMBR,
                    DOCAMNT  = transaction.DOCAMNT,
                    SLSAMNT  = transaction.SLSAMNT,
                    DOCDESCR = transaction.DOCDESCR,
                    ADRSCODE = transaction.ADRSCODE,
                    SLPRSNID = transaction.SLPRSNID,
                    SALSTERR = transaction.SALSTERR,
                    SHIPMTHD = transaction.SHIPMTHD,
                    TAXSCHID = transaction.TAXSCHID,
                    CSTPONBR = transaction.CSTPONBR,
                    COSTAMNT = transaction.COSTAMNT.GetValueOrDefault(),
                    TRDISAMT = transaction.TRDISAMT.GetValueOrDefault(),
                    TRDDISCT = transaction.TRDDISCT.GetValueOrDefault(),
                    FRTAMNT  = transaction.FRTAMNT.GetValueOrDefault(),
                    MISCAMNT = transaction.MISCAMNT.GetValueOrDefault(),
                    TAXAMNT  = transaction.TAXAMNT.GetValueOrDefault(),
                    BKTSLSAM = transaction.BKTSLSAM.GetValueOrDefault(),
                    BKTFRTAM = transaction.BKTFRTAM.GetValueOrDefault(),
                    BKTMSCAM = transaction.BKTMSCAM.GetValueOrDefault(),
                    CASHAMNT = transaction.CASHAMNT.GetValueOrDefault(),
                    CBKIDCSH = transaction.CBKIDCSH,
                    //CASHDATE = transaction.CASHDATE.ToShortDateString(),
                    DCNUMCSH = transaction.DCNUMCSH,
                    CHEKAMNT = transaction.CHEKAMNT.GetValueOrDefault(),
                    CBKIDCHK = transaction.CBKIDCHK,
                    CBKIDCRD = transaction.CBKIDCRD,
                    CHEKNMBR = transaction.CHEKNMBR,
                    //CHEKDATE = transaction.CHEKDATE.ToShortDateString(),
                    DCNUMCHK = transaction.DCNUMCHK,
                    CRCRDAMT = transaction.CRCRDAMT.GetValueOrDefault(),
                    CRCRDNAM = transaction.CRCRDNAM,
                    RCTNCCRD = transaction.RCTNCCRD,
                    //CRCARDDT = transaction.CRCARDDT.ToShortDateString(),
                    DCNUMCRD      = transaction.DCNUMCRD,
                    DISCRTND      = transaction.DISCRTND.GetValueOrDefault(),
                    DISTKNAM      = transaction.DISTKNAM.GetValueOrDefault(),
                    WROFAMNT      = transaction.WROFAMNT.GetValueOrDefault(),
                    PPSAMDED      = transaction.PPSAMDED.GetValueOrDefault(),
                    GSTDSAMT      = transaction.GSTDSAMT.GetValueOrDefault(),
                    PYMTRMID      = transaction.PYMTRMID,
                    DISAVAMT      = transaction.DISAVAMT.GetValueOrDefault(),
                    DSCDLRAM      = transaction.DSCDLRAM.GetValueOrDefault(),
                    DSCPCTAM      = transaction.DSCPCTAM.GetValueOrDefault(),
                    LSTUSRED      = transaction.LSTUSRED,
                    PTDUSRID      = transaction.PTDUSRID,
                    DistRef       = transaction.DistRef,
                    BatchCHEKBKID = transaction.BatchCHEKBKID,
                    //DUEDATE = transaction.DUEDATE.ToShortDateString(),
                    //DISCDATE = transaction.DISCDATE.ToShortDateString(),
                    CURNCYID = transaction.CURNCYID,
                    XCHGRATE = transaction.XCHGRATE.GetValueOrDefault(),
                    RATETPID = transaction.RATETPID,
                    //EXPNDATE = transaction.EXPNDATE.ToShortDateString(),
                    //EXCHDATE = transaction.EXCHDATE.ToShortDateString(),
                    EXGTBDSC = transaction.EXGTBDSC,
                    EXTBLSRC = transaction.EXTBLSRC,
                    RATEEXPR = transaction.RATEEXPR.GetValueOrDefault(),
                    DYSTINCR = transaction.DYSTINCR.GetValueOrDefault(),
                    RATEVARC = transaction.RATEVARC.GetValueOrDefault(),
                    TRXDTDEF = transaction.TRXDTDEF.GetValueOrDefault(),
                    RTCLCMTD = transaction.RTCLCMTD.GetValueOrDefault(),
                    PRVDSLMT = transaction.PRVDSLMT.GetValueOrDefault(),
                    DATELMTS = transaction.DATELMTS.GetValueOrDefault(),
                    //TIME1 = transaction.TIME1.ToShortDateString(),
                    COMDLRAM     = transaction.COMDLRAM.GetValueOrDefault(),
                    COMAPPTO     = transaction.COMAPPTO.GetValueOrDefault(),
                    RequesterTrx = transaction.RequesterTrx.GetValueOrDefault(),
                    CREATEDIST   = transaction.CREATEDIST.GetValueOrDefault(),
                };


                //if (transaction.DOCDATE != null)
                //{
                //    rmTransaction.DOCDATE = transaction.DOCDATE.ToShortDateString();
                //}

                if (transaction.CASHDATE != null)
                {
                    rmTransaction.CASHDATE = transaction.CASHDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.CHEKDATE != null)
                {
                    rmTransaction.CHEKDATE = transaction.CHEKDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.CRCARDDT != null)
                {
                    rmTransaction.CRCARDDT = transaction.CRCARDDT.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.DUEDATE != null)
                {
                    rmTransaction.DUEDATE = transaction.DUEDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.DISCDATE != null)
                {
                    rmTransaction.DISCDATE = transaction.DISCDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.EXPNDATE != null)
                {
                    rmTransaction.EXPNDATE = transaction.EXPNDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.EXCHDATE != null)
                {
                    rmTransaction.EXCHDATE = transaction.EXCHDATE.GetValueOrDefault().ToString("yyyy-MM-dd");;
                }

                if (transaction.TIME1 != null)
                {
                    rmTransaction.TIME1 = transaction.TIME1.GetValueOrDefault().ToString("yyyy-MM-dd");
                }

                return(rmTransaction);
            }
            catch (Exception)
            {
                //logW.LogExeption("Econnect", 2, ex);
                throw;
            }
        }
        /// <summary>
        /// Integra nc de AR y aplica facturas
        /// </summary>
        /// <param name="worker"></param>
        /// <param name="e"></param>
        private void IntegraRMNotaCreditoYAplicaciones(BackgroundWorker worker, DoWorkEventArgs e)
        {
            string mensajeOk    = "";
            string mensajeError = "";

            Model.RMFactura docGP = null;

            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            string nroLote = DateTime.Now.ToString("yyyyMMdd.HHmmss");

            worker.ReportProgress(0, new string[] { "Credit memo batch " + nroLote, "Credit memo Batch " + nroLote });
            cantidad = 0;
            foreach (var dato in _cobros.LBoletosBrasil)
            {
                mensajeOk    = "";
                mensajeError = "";
                DateTime fechaCobro = dato.FechaTotalLiquidado.AddDays(parametrosCobrosXL.FechaTotalLiquidadoAddDays);
                using (eConnectMethods eConnectMethods = new eConnectMethods())
                {
                    eConnectMethods.RequireProxyService = true;
                    List <RMTransactionType> masterRMTransactionType = new List <RMTransactionType>();
                    List <RMApplyType>       masterRMApplyType       = new List <RMApplyType>();

                    try
                    {
                        bool    error       = false;
                        decimal valorBoleto = decimal.Round(dato.ValorBoleto, 2);
                        decimal valorPago   = decimal.Round(dato.ValorPago, 2);
                        decimal juros       = decimal.Round(dato.Juros, 2);

                        //RMCashReceiptsType RMCashReceiptsTypeEntry = new RMCashReceiptsType();
                        RMTransactionType RMTransactionTypeEntry = new RMTransactionType();

                        taRMTransaction rmTransactionItem = new taRMTransaction();
                        //el número de la planilla puede venir así: B-10201, B-10201., B-10201 01, B-10201. 01
                        //string numFactura = dato.NumeroFactura.Trim().Length > 7 ? Model.Utiles.Izquierda(dato.NumeroFactura, 8) : Model.Utiles.Izquierda( dato.NumeroFactura, 7);
                        docGP = this.getCustnmbrDocnumbr(dato.NumeroFactura.Trim(), dato.FechaVencimientoPago);

                        rmTransactionItem.CUSTNMBR = docGP.Custnmbr;                                       // custData["custnmbr"].ToString(); //_custnmbr;
                        rmTransactionItem.DOCNUMBR = "CC" + dato.NumeroCobro;
                        rmTransactionItem.DOCDATE  = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha); //System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);
                        rmTransactionItem.RMDTYPAL = 7;
                        rmTransactionItem.DOCAMNT  = juros;
                        rmTransactionItem.SLSAMNT  = juros;

                        rmTransactionItem.BACHNUMB = nroLote;
                        rmTransactionItem.DOCDESCR = dato.NumeroFacturaYCuota;
                        rmTransactionItem.CSTPONBR = dato.NombrePagador;

                        RMApplyType RMApplyTypeEntry = new RMApplyType();

                        taRMApply ApplyItem = new taRMApply();
                        ApplyItem.APTODCNM  = docGP.Docnmbr; // custData["docnumbr"].ToString();   // _docnmbr.Trim();
                        ApplyItem.APFRDCNM  = "CC" + dato.NumeroCobro;
                        ApplyItem.APPTOAMT  = juros - Convert.ToDecimal(docGP.Amount) > 0 ? Convert.ToDecimal(docGP.Amount) : juros;
                        ApplyItem.APFRDCTY  = 7;
                        ApplyItem.APTODCTY  = 1;
                        ApplyItem.APPLYDATE = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha);     // System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);
                        ApplyItem.GLPOSTDT  = fechaCobro.ToString(parametrosCobrosXL.FormatoFecha);     // System.Configuration.ConfigurationManager.AppSettings[_pre + "_FormatoFecha"]);

                        cantidad++;

                        if (!error)
                        {
                            eConnectType eConnDoc = new eConnectType();
                            RMTransactionTypeEntry.taRMTransaction = rmTransactionItem;
                            masterRMTransactionType.Add(RMTransactionTypeEntry);
                            eConnDoc.RMTransactionType = masterRMTransactionType.ToArray();

                            RMApplyTypeEntry.taRMApply = ApplyItem;
                            masterRMApplyType.Add(RMApplyTypeEntry);
                            eConnDoc.RMApplyType = masterRMApplyType.ToArray();

                            XmlDocument xmlDoc = Serializa(eConnDoc);
                            eConnectMethods.CreateEntity(parametrosCobrosXL.ConnStringTarget, xmlDoc.OuterXml);

                            mensajeOk = dato.NumeroFactura + " - " + dato.NumeroCobro + ": Credit Memo OK" + Environment.NewLine;
                        }
                        else
                        {
                            mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + ": Error" + Environment.NewLine;
                        }

                        System.Threading.Thread.Sleep(100);
                    }
                    catch (eConnectException ec)
                    {
                        mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + " eConn: " + ec.Message + Environment.NewLine + ec.StackTrace;
                    }
                    catch (Exception ex)
                    {
                        mensajeError = dato.NumeroFactura + " - " + dato.NumeroCobro + ": " + ex.Message + Environment.NewLine + ex.StackTrace;
                    }
                    finally
                    {
                        eConnectMethods.Dispose();

                        worker.ReportProgress(0, new string[] { mensajeError, mensajeOk });
                    }
                }
            }
            worker.ReportProgress(0, new string[] { "Credit memo uploading finished.", "Credit memo uploading finished." });
        }