Exemple #1
0
        /// <summary>
        /// Genera codigo QR
        /// </summary>
        /// <param name="link"></param>
        /// <param name="ruc"></param>
        /// <param name="tipoCFE"></param>
        /// <param name="serie"></param>
        /// <param name="nroCFE"></param>
        /// <param name="monto"></param>
        /// <param name="fecha"></param>
        /// <param name="hash1"></param>
        /// <returns></returns>
        //public bool generadorQR(string link, string ruc, string tipoCFE,
        //    string serie, string nroCFE, string monto, string fecha, string hash1)
        public bool generadorQR(string link, CFE pComprobante, string monto)
        {
            bool   resultado = false;
            string rutaQ     = RutasCarpetas.RutaCarpetaComprobantes + Mensaje.nomImagenQr;

            try
            {
                DateTime fechaFormateada = DateTime.Parse(pComprobante.FechaComprobante);

                //hash1 = Uri.EscapeDataString(hash1);
                //string informacion = link + "?" + ruc + "," + tipoCFE + "," + serie +
                //    "," + nroCFE + "," + monto + "," + fecha + "," + hash1;
                pComprobante.CodigoSeguridad = Uri.EscapeDataString(pComprobante.CodigoSeguridad);
                string informacion = link + "?" + pComprobante.RucEmisor + "," + pComprobante.TipoCFEInt + "," + pComprobante.SerieComprobante +
                                     "," + pComprobante.NumeroComprobante + "," + monto + "," + fechaFormateada.ToString("dd/MM/yyyy") + "," + pComprobante.CodigoSeguridad;
                var qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
                var qrCode    = qrEncoder.Encode(informacion);

                var renderer = new GraphicsRenderer(new FixedModuleSize
                                                        (10, QuietZoneModules.Two), Brushes.Black, Brushes.White);
                using (var stream = new FileStream(rutaQ, FileMode.Create))
                    renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream);
                resultado = true;
            }
            catch (Exception)
            {
            }

            return(resultado);
        }
Exemple #2
0
        /// <summary>
        /// Realiza el envio de los sobre por medio del web service de DGI.
        /// </summary>
        /// <param name="sobre"></param>
        public void EnviarSobre(Sobre sobre, Sobre sobreDgi, CFE cfe, CAE cae)
        {
            ParametrosJobWsDGI parametrosJobWsDGI = new ParametrosJobWsDGI(RUTA_CERTIFICADO, CLAVE_CERTIFICADO, URL_ENVIO, URL_CONSULTAS, cfe, cae);

            try
            {
                parametrosJobWsDGI.Sobre    = sobre;
                parametrosJobWsDGI.SobreDgi = sobreDgi;

                comunicacionDGI.ConsumirWsEnviarSobre(parametrosJobWsDGI);
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString());
            }


            finally
            {
                //if (parametrosJobWsDGI != null)
                //{
                //    //Libera de memoria el objeto factura
                //    GC.SuppressFinalize(parametrosJobWsDGI);
                //    GC.Collect();
                //}
            }
        }
Exemple #3
0
        /// <summary>
        /// Crea un xml previo para un certificado
        /// </summary>
        /// <param name="cfe"></param>
        /// <returns></returns>
        public static string CrearXmlCFE(CFE cfe)
        {
            List <CFE> listaCfe = new List <CFE>();

            listaCfe.Add(cfe);

            try
            {
                //Crear objeto serializador
                XmlSerializer serializer = new XmlSerializer(typeof(List <CFE>));

                //Serializar lista de objetos  y obtener texto
                using (StringWriter writer = new StringWriter())
                {
                    serializer.Serialize(writer, listaCfe);

                    return(writer.ToString());
                }
            }
            catch (SerializationException ex)
            {
                return(ex.Message.ToString());
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString());
                return(ex.Message.ToString());
            }
        }
Exemple #4
0
        public static object getCFEByFactura(int Numero, string Serie)
        {
            CFE Temporal = null;

            using (SqlConnection Con = new SqlConnection(GlobalConnectionString))
            {
                Con.Open();
                using (SqlCommand Com = new SqlCommand("SELECT top 1 * from TESORERIACFE where SERIEFAC = @SERIE and NUMEROFAC = @NUMERO", (SqlConnection)Con))
                {
                    Com.Parameters.Add(new SqlParameter("@NUMERO", Numero));
                    Com.Parameters.Add(new SqlParameter("@SERIE", Serie));
                    using (IDataReader Reader = Com.ExecuteReader())
                    {
                        if (Reader.Read())
                        {
                            int    Tipo      = (int)(Reader["TIPOCFE"] is DBNull ? 0 : Reader["TIPOCFE"]);
                            string CFESerie  = (string)(Reader["SERIECFE"] is DBNull ? string.Empty : Reader["SERIECFE"]);
                            int    CFENumero = (int)(Reader["NUMEROCFE"] is DBNull ? 0 : Reader["NUMEROCFE"]);
                            string Link      = (string)(Reader["LINKCFE"] is DBNull ? string.Empty : Reader["LINKCFE"]);
                            string Albaran   = (string)(Reader["SERIEALB"] is DBNull ? string.Empty : Reader["SERIEALB"]);
                            int    NAlbaran  = (int)(Reader["NUMEROALB"] is DBNull ? 0 : Reader["NUMEROALB"]);
                            string SerieF    = (string)(Reader["SERIEFAC"] is DBNull ? string.Empty : Reader["SERIEFAC"]);
                            int    NumeroF   = (int)(Reader["NUMEROFAC"] is DBNull ? 0 : Reader["NUMEROFAC"]);
                            Temporal = new CFE(Tipo, CFESerie, CFENumero, Link, Albaran, NAlbaran, SerieF, NumeroF);
                        }
                    }
                }
            }
            return(Temporal);
        }
Exemple #5
0
        /// <summary>
        /// Metodo para alamcenar los comprobantes creados
        /// </summary>
        /// <param name="cfe"></param>
        private void AlmacenarCFECreado(CFE cfe)
        {
            string MayorUI = "N";


            if ((cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicketContingencia)) ||
                (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicketContingencia)) ||
                (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicketContingencia)))
            {
                if (cfe.TipoModena.Equals("UYU") || cfe.TipoModena.Equals("$"))
                {
                    if (ValorUI.valorUI * 10000 < (cfe.TotalMontoNoGravado + cfe.TotalMontoNetoIVATasaMinima + cfe.TotalMontoNetoIVATasaBasica))
                    {
                        MayorUI = "Y";
                    }
                }
                else
                {
                    if (ValorUI.valorUI * 10000 < (cfe.TotalMontoNoGravado + cfe.TotalMontoNetoIVATasaMinima + cfe.TotalMontoNetoIVATasaBasica) * cfe.TipoCambio)
                    {
                        MayorUI = "Y";
                    }
                }
            }

            //Almacena el cfe creado
            manteUdoCfe.Almacenar(cfe, MayorUI);
        }
 public EventosPagina(CFE pInfoComprobante, CAE pInfoCAE, string pDomicilioFiscal, string pLogo, string pDocNum)
 {
     this.infoCAE          = pInfoCAE;
     this.infoComprobantes = pInfoComprobante;
     this.domicilioFiscal  = pDomicilioFiscal;
     this.logo             = pLogo;
     this.docNum           = pDocNum;
 }
Exemple #7
0
        public Sobre(CFE cfe)
        {
            RucReceptor = cfe.NumDocReceptor;
            RUCEmisor   = cfe.RucEmisor;

            Nombre   = cfe.TipoCFEInt + "" + cfe.SerieComprobante + "" + cfe.NumeroComprobante;
            Idemisor = generarIdReceptor();
        }
Exemple #8
0
        private void ActualizarCodSeguridad(CFE cfe)
        {
            string tabla    = "";
            string consulta = "";

            if (cfe.CodigoSeguridad.Length > 0)
            {
                if ((cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicketContingencia)) ||
                    (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EFactura)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EFacturaContingencia)) ||
                    (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDEFactura)) ||
                    (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDEFacturaContingencia)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicketContingencia)) ||
                    (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EFacturaExportacion)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EFacturaExportacionContingencia)) ||
                    (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDEFacturaExportacion)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDEFacturaExportacionContingencia)))
                {
                    tabla = "OINV";
                }
                else if ((cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCEFactura)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCEFacturaContingencia)) ||
                         (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicketContingencia)) ||
                         (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCEFacturaExportacion)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCEFacturaExportacionContingencia)))
                {
                    tabla = "ORIN";
                }
                else if (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ERemito) || cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ERemitoContingencia) || cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ERemitoExportacion) ||
                         cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ERemitoExportacionContingencia))
                {
                    tabla = "ODLN";
                }
                else if (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EResguardo) || cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.EResguardoContingencia))
                {
                    tabla = DocumentosB1.DocumentoB1.TABLA_RESGUARDO_COMPRA;
                }

                consulta = "update " + tabla + " set U_CodSeguridad = '" + cfe.CodigoSeguridad.Substring(0, 6) + "' where DocEntry = " + cfe.DocumentoSAP;

                Recordset oRecordSet = null;

                try
                {
                    oRecordSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);
                    oRecordSet.DoQuery(consulta);
                }
                catch (Exception ex)
                {
                    SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("CodSeguridad/Error: " + ex.ToString());
                }
                finally
                {
                    if (oRecordSet != null)
                    {
                        //Libera de memoria el objeto factura
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(oRecordSet);
                        GC.Collect();
                    }
                }
            }
        }
Exemple #9
0
        /// <summary>
        /// Metodo que genera un archivo Xml
        /// </summary>
        /// <returns></returns>
        public bool generarXml(CFE infoCFE, CAE infoCAE)
        {
            bool resultado = false;

            try
            {
                XDocument documentoXml = new XDocument(
                    new XDeclaration("1.0", "UTF-8", string.Empty),
                    new XElement("Comprobantes",
                                 new XElement("Comprobante",
                                              new XElement("ruc", infoCFE.RucEmisor.ToString()),
                                              new XElement("compania", infoCFE.NombreEmisor.ToString()),
                                              new XElement("serie", infoCFE.SerieComprobante.ToString()),
                                              new XElement("tipoCFE", infoCFE.TipoCFE.ToString()),
                                              new XElement("numero", infoCFE.NumeroComprobante.ToString()),
                                              new XElement("numeroCAE", infoCAE.NumeroAutorizacion.ToString()),
                                              new XElement("vencimientoCAE", infoCAE.FechaVencimiento.ToString()),
                                              new XElement("fechaEmision", infoCFE.FechaComprobante.ToString()),
                                              new XElement("fechaFirma", infoCFE.FechaHoraFirma.ToString()),
                                              new XElement("rangoDesde", infoCAE.NumeroDesde.ToString()),
                                              new XElement("rangoHasta", infoCAE.NumeroHasta.ToString()),
                                              new XElement("moneda", infoCFE.TipoModena.ToString()),
                                              new XElement("tasaBasica", infoCFE.TasaBasicaIVA.ToString()),
                                              new XElement("tasaMinima", infoCFE.TasaMinimaIVA.ToString()),
                                              new XElement("montoTotal", infoCFE.TotalMontoTotal.ToString()),
                                              new XElement("montoNoFacturable", infoCFE.MontoNoFacturable.ToString()),
                                              new XElement("montoTotalPagar", infoCFE.MontoTotalPagar.ToString()),
                                              new XElement("totalMontoNoGravado", infoCFE.TotalMontoNoGravado.ToString()),
                                              new XElement("codigoSeguridad", infoCFE.CodigoSeguridad),
                                              new XElement("IVATasaBAsica", infoCFE.TotalIVATasaBasica.ToString()),
                                              new XElement("netoIVATasaBasica", infoCFE.TotalMontoNetoIVATasaBasica.ToString())
                                              )
                                 )
                    );

                if (!FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    rutaXml = RutasCarpetas.RutaCarpetaComprobantes + infoCFE.TipoCFEInt + infoCFE.SerieComprobante
                              + infoCFE.NumeroComprobante + ".xml";
                }
                else
                {
                    rutaXml = RutasCarpetas.RutaCarpetaContingenciaComprobantes + infoCFE.TipoCFEInt + infoCFE.SerieComprobante
                              + infoCFE.NumeroComprobante + ".xml";
                }
                documentoXml.Save(rutaXml);

                resultado = true;
            }
            catch (Exception)
            {
            }

            return(resultado);
        }
Exemple #10
0
        /// <summary>
        /// Ejecuta una serie de tareas
        /// </summary>
        /// <param name="parametros"></param>
        private void EjecutarTareas(object parametros)
        {
            CFE cfe = parametros as CFE;
            CAE cae = AdminEventosUI.caePrueba;

            ObtenerFirmaDigital();
            ObtenerUrlWebService();

            cfe.CodigoSeguridad = CrearCertificado(cfe);
            //cfe.CodigoSeguridad = ObtenerCodigoSeguridad(cfe.TipoCFEInt + "" + cfe.SerieComprobante + "" + cfe.NumeroComprobante);

            #region Proceso_WebService
            ActualizarCodSeguridad(cfe);
            #endregion Proceso_WebService

            sobreDgi = CrearSobre(cfe, true);
            //Se genera el archivo xml
            ArchivoXml archXml = new ArchivoXml();
            archXml.generarXml(cfe, cae);
            AlmacenarCFECreado(cfe);
            sobre = CrearSobre(cfe, false);

            double topeUI = Convert.ToDouble(ValorUI.valorUI * 10000, System.Globalization.CultureInfo.InvariantCulture);

            //  if (!FrmEstadoContingencia.estadoContingencia.Equals("Y"))
            //  {
            if ((cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.ETicketContingencia)) ||
                (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NCETicketContingencia)) ||
                (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicket)) || (cfe.TipoCFE.Equals(CFE.ESTipoCFECFC.NDETicketContingencia)))
            {
                if (cfe.TipoModena.Equals("UYU") || cfe.TipoModena.Equals("$"))
                {
                    if (ValorUI.valorUI * 10000 < (cfe.TotalMontoTotal - cfe.TotalIVATasaMinima - cfe.TotalIVATasaBasica))

                    {
                        EnviarSobre(sobre, sobreDgi, cfe, cae);
                    }
                }
                else
                {
                    if (ValorUI.valorUI * 10000 < (cfe.TotalMontoTotal - cfe.TotalIVATasaMinima - cfe.TotalIVATasaBasica) * cfe.TipoCambio)
                    {
                        EnviarSobre(sobre, sobreDgi, cfe, cae);
                    }
                }
            }
            else
            {
                //Enviar sobre a DGI
                EnviarSobre(sobre, sobreDgi, cfe, cae);
            }
            // }
        }
Exemple #11
0
        /// <summary>
        /// Ingresa un nuevo registro a la tabla @TFECFE.
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="idCFE"></param>
        /// <param name="idSobre"></param>
        /// <param name="tipo"></param>
        /// <param name="idReceptor"></param>
        /// <param name="fechaCreacion"></param>
        /// <param name="estado"></param>
        /// <returns></returns>
        public bool Almacenar(CFE cfe, string MayorUI)
        {
            bool resultado = false;

            GeneralService servicioGeneral = null;
            GeneralData    dataGeneral     = null;

            try
            {
                //Obtener el servicio de la compañia
                servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECFE");

                //Apuntar a la cabecera del UDO
                dataGeneral = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralData);

                //Asiganar valor a cada una de la propiedades del udo
                dataGeneral.SetProperty("U_DocSap", cfe.DocumentoSAP);
                dataGeneral.SetProperty("U_TipoDoc", cfe.TipoCFEInt.ToString());
                dataGeneral.SetProperty("U_NumCFE", cfe.NumeroComprobante.ToString());
                dataGeneral.SetProperty("U_Serie", cfe.SerieComprobante);
                dataGeneral.SetProperty("U_EstadoDgi", cfe.EstadoDGI.ToString());
                dataGeneral.SetProperty("U_EstadoRec", cfe.EstadoReceptor.ToString());
                dataGeneral.SetProperty("U_Sucursal", cfe.CodigoCasaPrincipalEmisor.ToString());
                dataGeneral.SetProperty("U_FechaFirma", cfe.FechaFirma.ToString());
                dataGeneral.SetProperty("U_MayorUI", MayorUI);

                //Agregar el nuevo registro a la base de datos mediante el servicio general
                servicioGeneral.Add(dataGeneral);

                resultado = true;
            }
            catch (Exception ex)
            {
                // SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ManteUdoCFE/Error: " + ex.ToString());
            }
            finally
            {
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Exemple #12
0
        private void enviarNC(int numeroDocumento, string formaPago, string adenda, string razonRef)
        {
            AdminEventosUI eventos = new AdminEventosUI(true);

            NotaCreditoB1 notaCreditoB1 = new NotaCreditoB1();
            DatosPDF      datosPdf      = new DatosPDF();

            datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "RIN1", datosPdf);
            datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "ORIN", datosPdf);
            datosPdf.NombreVendedor   = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "ORIN");
            datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "ORIN");
            datosPdf.Titular          = DocumentoB1.Titular(numeroDocumento, "ORIN");
            datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf);
            datosPdf = DocumentoB1.ActualizarEstado(datosPdf);
            datosPdf = DocumentoB1.ActualizarCodigo(datosPdf);
            datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf);

            datosPdf.FormaPago = formaPago;

            //Obtener el objeto cfe a partir de los datos del documento creado
            cfe = notaCreditoB1.ObtenerDatosNotaCredito(numeroDocumento, Objetos.CAE.ESTipoCFECFC.NCEFactura, formaPago, adenda, razonRef);

            if (cfe != null)
            {
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    //Obtener el objeto cae utilizado en el documento creado
                    cae = manteUdoCae.Consultar("999", cfe.SerieComprobante);
                }
                else
                {
                    //Obtener el objeto cae utilizado en el documento creado
                    cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante);
                }

                //Actualizar datos del CFE en el documento creado
                notaCreditoB1.ActualizarDatosCFENotaCredito(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), cfe.InfoReferencia);

                DocumentoB1.ActualizarCAEAsiento(int.Parse(datosPdf.DocNum), cfe.TipoCFEInt.ToString(), cfe.SerieComprobante, cfe.NumeroComprobante.ToString(), "14", "");

                datosPdf.DescuentoGeneral    = NotaCreditoB1.descuentoGeneral;
                datosPdf.DescuentoExtranjero = NotaCreditoB1.descuentoGeneralExtranjero;
                datosPdf.PorcentajeDescuento = NotaCreditoB1.porcentajeDescuento;
                eventos.EnviarDocumento(cfe, cae, datosPdf, "RIN1", null, "ORIN");

                //Cambio el estado a Procesado para no volver a enviarlo
                notaCreditoB1.ActualizarEstadoDocumento(numeroDocumento, PROCESADO, cfe.CodigoSeguridad);

                cfe = null;
                cae = null;
            }
        }
Exemple #13
0
        /// <summary>
        /// Obtiene el listado cfe utilizados por fecha
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public List <CFE> ObtenerCertificadosUtilizados()
        {
            Recordset  recSet            = null;
            string     consulta          = "";
            List <CFE> listaCertificados = new List <CFE>();
            CFE        cfe;

            try
            {
                //Obtener objeto estandar de record set
                recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

                //Establecer consulta
                consulta = "SELECT T1.U_DocSap, T1.U_TipoDoc, T1.U_Serie, T1.U_NumCFE, T1.U_Sucursal FROM [@TFECFE] AS T1  WHERE CONVERT(DATE, T1.CreateDate, 103) = CONVERT(DATE, GETDATE(), 103)  ORDER BY U_DocSap, U_Sucursal";

                //Ejecutar consulta
                recSet.DoQuery(consulta);

                recSet.MoveFirst();

                for (int i = 0; i < recSet.RecordCount; i++)
                {
                    cfe = new CFE();

                    cfe.DocumentoSAP              = recSet.Fields.Item("U_DocSap").Value + "";
                    cfe.TipoCFEInt                = int.Parse(recSet.Fields.Item("U_TipoDoc").Value + "");
                    cfe.SerieComprobante          = recSet.Fields.Item("U_Serie").Value + "";
                    cfe.NumeroComprobante         = int.Parse(recSet.Fields.Item("U_NumCFE").Value + "");
                    cfe.CodigoCasaPrincipalEmisor = int.Parse(recSet.Fields.Item("U_Sucursal").Value + "");

                    listaCertificados.Add(cfe);

                    recSet.MoveNext();
                }
            }
            catch (Exception)
            {
                listaCertificados = null;
            }
            finally
            {
                if (recSet != null)
                {
                    //Liberar memoria utilizada por el objeto record set
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(listaCertificados);
        }
Exemple #14
0
        /// <summary>
        /// Obtiene la adenda en caso de que exista
        /// </summary>
        /// <param name="cfe"></param>
        /// <returns></returns>
        public static string ObtenerAdenda(CFE cfe)
        {
            string resultado = "";

            if (cfe != null)
            {
                if (!cfe.TextoLibreAdenda.Equals(""))
                {
                    resultado = cfe.TextoLibreAdenda;
                }
            }

            return(resultado);
        }
Exemple #15
0
        /// <summary>
        /// Ingresa un nuevo registro a la tabla @TFECERCON
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="idCFE"></param>
        /// <param name="idSobre"></param>
        /// <param name="tipo"></param>
        /// <param name="idReceptor"></param>
        /// <param name="fechaCreacion"></param>
        /// <param name="estado"></param>
        /// <returns></returns>
        public bool Almacenar(CFE cfe)
        {
            bool resultado = false;

            GeneralService servicioGeneral = null;
            GeneralData    dataGeneral     = null;

            try
            {
                //Obtener el servicio de la compañia
                servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECERCON");

                //Apuntar a la cabecera del UDO
                dataGeneral = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralData);

                //Asiganar valor a cada una de la propiedades del udo
                dataGeneral.SetProperty("U_DocSap", cfe.DocumentoSAP);
                dataGeneral.SetProperty("U_TipoDoc", cfe.TipoCFEInt.ToString());
                dataGeneral.SetProperty("U_NumCFE", cfe.NumeroComprobante.ToString());
                dataGeneral.SetProperty("U_Serie", cfe.SerieComprobante);
                dataGeneral.SetProperty("U_EmaRec", cfe.CorreoReceptor);

                //Agregar el nuevo registro a la base de datos mediante el servicio general
                servicioGeneral.Add(dataGeneral);

                resultado = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Exemple #16
0
        /// <summary>
        /// Copiar el Cfe de contingencia a la tabla de CFEs
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="docEntry"></param>
        /// <returns></returns>
        public bool CopiarCFE(string docEntry)
        {
            bool        resultado   = false;
            ManteUdoCFE manteUdoCfe = new ManteUdoCFE();
            Recordset   registro    = null;
            string      consulta    = "SELECT U_DocSap, U_TipoDoc, U_Serie, U_NumCFE FROM [@TFECERCON] WHERE DocEntry = '" + docEntry + "'";
            CFE         cfe         = new CFE();

            try
            {
                registro = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);
                registro.DoQuery(consulta);

                if (registro.RecordCount > 0)
                {
                    cfe.DocumentoSAP      = registro.Fields.Item("U_DocSap").Value + "";
                    cfe.TipoCFEInt        = Convert.ToInt16(registro.Fields.Item("U_TipoDoc").Value + "");
                    cfe.SerieComprobante  = registro.Fields.Item("U_Serie").Value + "";
                    cfe.NumeroComprobante = int.Parse(registro.Fields.Item("U_NumCFE").Value + "");
                    cfe.EstadoReceptor    = CFE.ESEstadoCFE.PendienteReceptor;
                    cfe.EstadoDGI         = CFE.ESEstadoCFE.PendienteDGI;
                    //if (manteUdoCfe.Almacenar(cfe))
                    //{
                    //    resultado = true;
                    //}
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                if (registro != null)
                {
                    //Libera de memoria el objeto
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(registro);
                    GC.Collect();
                }
            }

            return(resultado);
        }
Exemple #17
0
        /// <summary>
        /// Retorna un CFE con los totales para un documento determinado
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="numeroDocumento"></param>
        /// <returns></returns>
        public CFE ObtenerTotalesCertificado(int numeroDocumento)
        {
            CFE cfe = new CFE();

            Documents notaDebito = null;

            try
            {
                notaDebito = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oInvoices);
                notaDebito.GetByKey(numeroDocumento);

                cfe.TotalMontoNoGravado = this.ObtenerTotalesPorImpuesto(notaDebito, "IVAVEXE");
                cfe.TotalMontoExportacionAsimilados = this.ObtenerTotalesPorImpuesto(notaDebito, " IVAEXPO");
                cfe.TotalMontoImpuestoPercibido = 0;
                cfe.TotalMontoIVASuspenso = this.ObtenerTotalesPorImpuesto(notaDebito, "IVASUSP");
                cfe.TotalMontoNetoIVATasaMinima = this.ObtenerTotalesPorImpuesto(notaDebito, "IVAVTM");
                cfe.TotalMontoNetoIVATasaBasica = this.ObtenerTotalesPorImpuesto(notaDebito, "IVAVTB");
                cfe.TotalMontoNetoIVAOtraTasa = 0;
                cfe.TasaMinimaIVA = this.ObtenerMontoTasa("IVAVTM");
                cfe.TasaBasicaIVA = this.ObtenerMontoTasa("IVAVTB");
                cfe.TotalIVAOtraTasa = this.ObtenerTotalesIVAPorTasa(notaDebito.DocEntry.ToString(), "IVAVEXE", "INV1");
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("NotaDebitoB1/Error: " + ex.ToString());
            }
            finally
            {
                if (notaDebito != null)
                {
                    //Libera de memoria el obtejo notaDebito
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(notaDebito);
                    GC.Collect();
                }
            }



            return cfe;
        }
Exemple #18
0
        /// <summary>
        /// Retorna un CFE con los totales para un documento determinado
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="numeroDocumento"></param>
        /// <returns></returns>
        public CFE ObtenerTotalesCertificado(int numeroDocumento)
        {
            CFE       cfe     = new CFE();
            Documents factura = null;

            try
            {
                factura = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oInvoices);
                factura.GetByKey(numeroDocumento);

                cfe.TotalMontoNoGravado             = this.ObtenerTotalesPorImpuesto(factura, "IVAVEXE");
                cfe.TotalMontoExportacionAsimilados = this.ObtenerTotalesPorImpuesto(factura, " IVAEXPO");
                cfe.TotalMontoImpuestoPercibido     = 0;
                cfe.TotalMontoIVASuspenso           = this.ObtenerTotalesPorImpuesto(factura, "IVASUSP");
                cfe.TotalMontoNetoIVATasaMinima     = this.ObtenerTotalesPorImpuesto(factura, "IVAVTM");
                cfe.TotalMontoNetoIVATasaBasica     = this.ObtenerTotalesPorImpuesto(factura, "IVAVTB");
                cfe.TotalMontoNetoIVAOtraTasa       = 0;
                cfe.TasaMinimaIVA    = this.ObtenerMontoTasa("IVAVTM");
                cfe.TasaBasicaIVA    = this.ObtenerMontoTasa("IVAVTB");
                cfe.TotalIVAOtraTasa = this.ObtenerTotalesIVAPorTasa(factura.DocEntry.ToString(), "IVAVEXE", "INV1");
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("FacturaB1/Error: " + ex.ToString());
            }
            finally
            {
                if (factura != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(factura);
                    GC.Collect();
                }
            }

            return(cfe);
        }
Exemple #19
0
        public CFE ObtenerDatosNotaDebito(int numNotaDebito, CAE.ESTipoCFECFC tipoCFE, string formaPago, string adenda, string razonRef)
        {
            Documents notaDebito = null;
            CFE cfe = new CFE();
            CFEInfoReferencia cfeReferencia;
            CFEItems item;
            Emisor emisor;
            Rango rango = null;
            CFEMediosPago mediosPago;
            CAE cae;
            descuentoGeneral = 0;
            descuentoGeneralExtranjero = 0;
            porcentajeDescuento = 0;

            try
            {

                notaDebito = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oInvoices);
                notaDebito.GetByKey(numNotaDebito);

                //Actualiza la forma de pagos
                notaDebito.UserFields.Fields.Item("U_U_FrmPagOIN").Value = formaPago;
                notaDebito.Update();

                #region EMISOR

                emisor = this.ObtenerDatosEmisor() as Emisor;
                cfe.RucEmisor = emisor.Ruc;
                cfe.NombreEmisor = emisor.Nombre;
                cfe.NombreComercialEmisor = emisor.NombreComercial;
                cfe.NumeroResolucion = emisor.NumeroResolucion;
                cfe.CodigoCasaPrincipalEmisor = this.ObtenerSucursal(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO);
                cfe.CajaEmisor = this.ObtenerCaja(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO);
                cfe.DomicilioFiscalEmisor = this.ObtenerDireccionEmisor();
                cfe.CiuidadEmisor = this.ObtenerCiudadEmisor();
                cfe.DocumentoSAP = notaDebito.DocEntry.ToString();
                cfe.EstadoDGI = CFE.ESEstadoCFE.PendienteDGI;
                cfe.EstadoReceptor = CFE.ESEstadoCFE.PendienteReceptor;

                #endregion EMISOR

                #region RECEPTOR

                cfe.TipoDocumentoReceptor = CFE.ObtenerTipoDocumentoReceptor(notaDebito.UserFields.Fields.Item("U_TipDocND").Value);
                cfe.CodigoPaisReceptor = this.ObtenerCodPaisReceptor(notaDebito.CardCode, cfe.TipoDocumentoReceptor);
                cfe.NombreReceptor = notaDebito.CardName;

                if (cfe.PaisReceptor.Equals("UY"))
                {
                    cfe.NumDocReceptorUruguayo = notaDebito.UserFields.Fields.Item("U_ValDocND").Value;
                }
                else
                {
                    cfe.NumDocReceptorExtrangero = notaDebito.UserFields.Fields.Item("U_ValDocND").Value;

                    ManteUdoAdobe manteUdoAdobe = new ManteUdoAdobe();
                    string ciGenereico = manteUdoAdobe.ObtenerCiGenerico();

                    if (cfe.NumDocReceptorExtrangero.Equals(ciGenereico))
                    {
                        cfe.NumDocReceptorExtrangero = "00000000";
                    }
                }

                //cfe.CiuidadReceptor = notaDebito.Address.Replace("\r", "");
                cfe.CiuidadReceptor = this.ObtenerCiudad(notaDebito.DocEntry, "INV12");
                cfe.PaisReceptor = this.ObtenerNombPaisReceptor(notaDebito.CardCode);
                cfe.CorreoReceptor = this.ObtenerCorreoReceptor(notaDebito.CardCode);
                //cfe.DireccionReceptor = cfe.CiuidadReceptor;// +" " + cfe.PaisReceptor;
                cfe.DireccionReceptor = this.ObtenerCiudad(notaDebito.DocEntry, "INV12");
                cfe.NumeroCompraReceptor = this.ObtenerNroPedidoReceptor(notaDebito.DocEntry, TABLA_NOTA_DEBITO);

                #endregion RECEPTOR

                #region TOTALES ENCABEZADO

                cfe.TipoModena = this.ObtenerCodigoISOModena(notaDebito.DocCurrency);

                ManteUdoTipoCambio manteUdoTipoCambio = new ManteUdoTipoCambio();
                string temp = "", confTC = manteUdoTipoCambio.ObtenerConfiguracion(out temp);

                if (confTC.Equals("N"))
                {
                     double docRate = this.ObtenerDocRate();
                    
                    if (cfe.TipoModena == "UYU" || cfe.TipoModena == "UY")
                    {
                                               
                            cfe.TipoCambio = 1;
                     }
                        else
                        {
                             if (docRate > 0)
                                {
                                    cfe.TipoCambio = 1 / docRate;
                                    cfe.TipoCambio = Math.Round(cfe.TipoCambio, 2);
                                }  
                        }                        
                    }
                                    
                else
                {
                    cfe.TipoCambio = notaDebito.DocRate;
                }

                //Si el cliente es extrangero entonces el monto de exportacion y asimilados es la suma de las lineas si importar el codigo de impuesto que tenga
                //y el monto total a pagar va ser ese mismo monto. En el xslt en ambos casos se asigna el mismo valor
                if (this.ValidarClienteExtranjero(notaDebito.CardCode))
                {
                    cfe.TotalMontoExportacionAsimilados = this.ObtenerTotalesExportacion(notaDebito);
                }
                else
                {
                    cfe.TotalMontoNoGravado = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("1"));// / cfe.TipoCambio;
                    cfe.TotalMontoNoGravadoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("1"));
                    cfe.TotalMontoImpuestoPercibido = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("11"));// / cfe.TipoCambio;
                    cfe.TotalMontoImpuestoPercibidoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("11"));
                    cfe.TotalMontoIVASuspenso = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("12"));// / cfe.TipoCambio;
                    cfe.TotalMontoIVASuspensoExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("12"));
                    cfe.TotalMontoNetoIVATasaMinima = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("2"));// / cfe.TipoCambio;
                    cfe.TotalMontoNetoIVATasaMinimaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("2"));
                    cfe.TotalMontoNetoIVATasaBasica = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("3"));// / cfe.TipoCambio;
                    cfe.TotalMontoNetoIVATasaBasicaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("3"));
                    cfe.TotalMontoNetoIVAOtraTasa = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("4"));// / cfe.TipoCambio;
                    cfe.TotalMontoNetoIVAOtraTasaExtranjero = this.ObtenerTotalesPorImpuesto(notaDebito, ObtenerCodigoImpuesto("4"));
                    cfe.TasaMinimaIVA = this.ObtenerIvaTasaMinima();
                    cfe.TasaBasicaIVA = this.ObtenerIvaTasaBasica();

                    cfe.TotalIVAOtraTasa = this.ObtenerTotalesIVAPorTasa(notaDebito.DocEntry.ToString(), "IVAB", "INV1");
                }

                cfe.Lineas = notaDebito.Lines.Count;

                #endregion TOTALES ENCABEZADO

                #region ITEMS

                for (int i = 0; i < notaDebito.Lines.Count; i++)
                {
                    notaDebito.Lines.SetCurrentLine(i);


                        //Si el Tipo de lista de Materiales de Ventas no lo agrego al XML 
                    if (!notaDebito.Lines.TreeType.ToString().Equals("iIngredient"))
                    {


                        //Nueva instancia del objeto item de cfe
                        item = cfe.NuevoItem();

                        item.NumeroLinea = i + 1;

                        string indFacturacionNumero = "";// notaDebito.Lines.UserFields.Fields.Item("U_IndND").Value + "";

                        if (indFacturacionNumero.Equals("6"))
                        {
                            item.IndicadorFacturacion = 6;
                        }
                        else if (indFacturacionNumero.Equals("7"))
                        {
                            item.IndicadorFacturacion = 7;
                        }
                        #region FE_EXPORTACION
                        else if (this.ValidarClienteExtranjero(notaDebito.CardCode))
                        {
                            item.IndicadorFacturacion = 10;
                        }
                        #endregion FE_EXPORTACION
                        else
                        {
                            string resultadoIndicadorFacturacion = this.ObtenerIndicadorFacturacion(notaDebito.Lines.TaxCode.ToString());

                            if (resultadoIndicadorFacturacion.Equals(""))
                            {
                                item.IndicadorFacturacion = 0;
                            }
                            else
                            {
                                item.IndicadorFacturacion = Convert.ToInt16(resultadoIndicadorFacturacion);
                            }


                          
                        }
                        item.NombreItem = notaDebito.Lines.ItemCode;
                        item.DescripcionItem = notaDebito.Lines.ItemDescription;
                        item.CantidadItem = notaDebito.Lines.Quantity;
                        item.PrecioUnitarioItem = notaDebito.Lines.Price - (notaDebito.Lines.Price * (notaDebito.DiscountPercent / 100));

                        if (item.PrecioUnitarioItem.ToString().Equals("0"))
                        {
                            item.IndicadorFacturacion = 5;
                        }


                        item.PrecioUnitarioItemPDF = notaDebito.Lines.Price;
                        item.LineNum = notaDebito.Lines.LineNum;
                        item.ArticulosXUnidad = notaDebito.Lines.UnitsOfMeasurment;
                        item.UnidadMedida = this.ObtenerUnidadMedidaItem(notaDebito.Lines.ItemCode, notaDebito.DocEntry + "", notaDebito.Lines.LineNum + "", "INV1");
                        item.UnidadMedidaPDF = item.UnidadMedida;
                        item.TipoImpuesto = notaDebito.Lines.TaxCode;

                        cfe.AgregarItem(item);

                    }
                }

                #endregion ITEMS

                #region MEDIOS DE PAGO

                mediosPago = cfe.NuevoMediosPago();
                mediosPago.Glosa = this.ObtenerMedioPago(notaDebito.DocEntry.ToString(), TABLA_NOTA_DEBITO);
                if (formaPago.Equals("Contado"))
                {
                    cfe.FormaPago = CFE.ESFormaPago.Contado;
                }
                else
                {
                    cfe.FormaPago = CFE.ESFormaPago.Credito;
                }
                cfe.AgregarMediosPago(mediosPago);

                #endregion MEDIOS DE PAGO

                descuentoGeneral = notaDebito.TotalDiscount;
                descuentoGeneralExtranjero = notaDebito.TotalDiscountFC;
                porcentajeDescuento = notaDebito.DiscountPercent;

                #region IDENTIFICACION DEL COMPROBANTE

                //Valida que el documento sea de contingencia
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    //Valida que el cliente sea de contado
                    if (this.ValidarClienteContado(notaDebito.CardCode))
                    {
                        cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicketContingencia));
                    }
                    else
                    {
                        //Valida si es un ciente extranjero
                        if (this.ValidarClienteExtranjero(notaDebito.CardCode))
                        {
                            cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacionContingencia));
                        }
                        else
                        {
                            cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaContingencia));
                        }
                    }
                }//Si no es contingencia
                else
                {
                    //Valida que el cliente sea de contado
                    if (this.ValidarClienteContado(notaDebito.CardCode))
                    {
                        cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket));
                        rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango;
                    }
                    else
                    {
                        //Valida si es un cliente extranjero
                        if (this.ValidarClienteExtranjero(notaDebito.CardCode))
                        {
                            cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion));
                            rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango;
                        }
                        else
                        {
                            cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura));
                            rango = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango;
                        }
                    }
                }

                //Estado de contigencia serie y numero se ingresan manualmente
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    SAPbouiCOM.Item txtNumCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtNumCFE");
                    SAPbouiCOM.Item txtSeCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtSeCFE");

                    cfe.SerieComprobante = ((SAPbouiCOM.EditText)txtSeCFE.Specific).Value + "";
                    cfe.NumeroComprobante = int.Parse(((SAPbouiCOM.EditText)txtNumCFE.Specific).Value + "");
                }
                else
                {
                    if (rango != null)
                    {
                        cfe.SerieComprobante = rango.Serie;
                        cfe.NumeroComprobante = rango.NumeroActual;
                    }
                }

                cfe.FechaComprobante = notaDebito.DocDate.ToString("yyyy-MM-dd");
                cfe.FechaVencimiento = notaDebito.DocDueDate.ToString("yyyy-MM-dd");

                if (notaDebito.DocType == BoDocumentTypes.dDocument_Items)
                {
                    cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Articulo;
                }
                else if (notaDebito.DocType == BoDocumentTypes.dDocument_Service)
                {
                    cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Servicio;
                }

                //if (notaDebito.DocumentStatus == BoStatus.bost_Close)
                //{
                //    cfe.FormaPago = CFE.ESFormaPago.Contado;
                //}
                //else
                //{
                //    cfe.FormaPago = CFE.ESFormaPago.Credito;
                //}

                #endregion IDENTIFICACION DEL COMPROBANTE

                #region EXPORTACION

                int modalidad, viaTransporte;

                bool convertido = int.TryParse(notaDebito.UserFields.Fields.Item("U_ModVenND").Value, out modalidad);

                if (convertido)
                {
                    cfe.ModalidadVentaInt = modalidad;
                }

                #region FE_EXPORTACION
                //cfe.ViaTransporteInt = notaDebito.TransportationCode;
                convertido = false;
                convertido = int.TryParse(notaDebito.UserFields.Fields.Item(Globales.Constantes.UDFViaTransporteND).Value, out viaTransporte);
                if (convertido)
                {
                    cfe.ViaTransporteInt = viaTransporte;
                }
                #endregion FE_EXPORTACION

                cfe.ClausulaVenta = notaDebito.UserFields.Fields.Item("U_ClaVenND").Value;

                #endregion EXPORTACION

                #region ADENDA

                //ManteUdoAdenda manteUdoAdenda = new ManteUdoAdenda();
                //Adenda adenda = manteUdoAdenda.ObtenerAdenda(ProcConexion.Comp, Adenda.ESTipoObjetoAsignado.TipoCFE113, notaDebito.DocNum.ToString());

                //cfe.TextoLibreAdenda = adenda.CadenaAdenda;
                cfe.TextoLibreAdenda = adenda;// notaDebito.UserFields.Fields.Item("U_AdendaND").Value;

                #endregion ADENDA

                #region DOCUMENTO DE REFERENCIA                

                //cfeReferencia = (CFEInfoReferencia)this.ObtenerDocumentoReferencia(TABLA_DETALLES_NOTA_DEBITO, notaDebito.DocEntry.ToString());

                //if (cfeReferencia != null)
                //{
                //    cfeReferencia.NumeroLinea = 1;
                //}
                //else
                //{
                //    cfeReferencia = new CFEInfoReferencia();
                //    cfeReferencia.IndicadorReferenciaGlobal = CFEInfoReferencia.ESIndicadorReferenciaGlobal.ReferenciaGlobal;
                //    cfeReferencia.NumeroLinea = 1;
                //    cfeReferencia.NumeroComprobanteReferencia = "";
                //    cfeReferencia.SerieComprobanteReferencia = "";

                //    if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                //    {
                //        cfeReferencia.TipoCFEReferencia = 111;
                //        cfeReferencia.SerieComprobanteReferencia = "A";//Serie del documento de referencia
                //        cfeReferencia.NumeroComprobanteReferencia = "1";//Numero de CFE del documento de referencia
                //    }

                //    if (razonRef.Equals(""))
                //    {

                //        cfeReferencia.RazonReferencia = "Descuento General";
                //    }
                //    else
                //    {
                //        cfeReferencia.RazonReferencia = razonRef;
                //    }
                //}

                cfeReferencia = new CFEInfoReferencia();
                cfeReferencia.NumeroLinea = 1;
                cfeReferencia.SerieComprobanteReferencia = notaDebito.UserFields.Fields.Item("U_SerieRefND").Value;

                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    cfeReferencia.TipoCFEReferencia = 111;
                    cfeReferencia.SerieComprobanteReferencia = "A"; //Serie del documento de referencia
                    cfeReferencia.NumeroComprobanteReferencia = "1"; //Numero de CFE del documento de referencia
                }
                else
                {
                    if (cfeReferencia.SerieComprobanteReferencia == "" || cfeReferencia.SerieComprobanteReferencia == "1")
                    {
                        cfeReferencia.IndicadorReferenciaGlobal = CFEInfoReferencia.ESIndicadorReferenciaGlobal.ReferenciaGlobal;
                        cfeReferencia.SerieComprobanteReferencia = "";
                        cfeReferencia.NumeroComprobanteReferencia = "";
                        cfeReferencia.RazonReferencia = "Descuento General";
                    }
                    else
                    {
                        cfeReferencia.TipoCFEReferencia = 111;
                        cfeReferencia.NumeroComprobanteReferencia = notaDebito.UserFields.Fields.Item("U_NumRefND").Value;
                        cfeReferencia.RazonReferencia = razonRef;
                    }
                }

                if (cfeReferencia != null)
                {
                    cfe.AgregarInfoReferencia(cfeReferencia);
                }

                #endregion  DOCUMENTO DE REFERENCIA

                #region CAE

                //Valida que el documento sea de contingencia
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    //Valida que el cliente sea de contado
                    if (this.ValidarClienteContado(notaDebito.CardCode))
                    {
                        cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE;
                    }
                    else
                    {
                        cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE;
                    }
                }//Si no es contingencia
                else
                {
                    //Valida que el cliente sea de contado
                    if (this.ValidarClienteContado(notaDebito.CardCode))
                    {
                        cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDETicket)) as CAE;
                    }
                    else
                    {
                        #region FE_EXPORTACION
                        //cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura)) as CAE;                        
                        if (ValidarClienteExtranjero(notaDebito.CardCode))
                        {
                            cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFacturaExportacion)) as CAE;
                        }
                        else
                        {
                            cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.NDEFactura)) as CAE;
                        }
                        #endregion FE_EXPORTACION
                    }
                }

                if (cae.NumeroAutorizacion != null)
                {
                    cfe.NumeroCAE = long.Parse(cae.NumeroAutorizacion);
                    cfe.NumeroInicialCAE = cae.NumeroDesde;
                    cfe.NumeroFinalCAE = cae.NumeroHasta;
                    cfe.FechaVencimientoCAE = cae.FechaVencimiento;

                    ManteDocumentos manteDocumentos = new ManteDocumentos();
                    FinCae finCae = manteDocumentos.ObtenerAlertaCAE();

                      if (finCae.Cantidad > 0 && rango != null)
                    {
                    if ((cae.NumeroHasta - rango.NumeroActual) <= finCae.Cantidad)
                    {
                        SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                            ("!!!Atención!!!  Rango utilizado: " + rango.NumeroActual + " de: " + cae.NumeroHasta +
                            ". Solicitar Nuevos CAEs a DGI.");
                    }
                    }

                    DateTime fechaVencimiento = DateTime.Parse(cae.FechaVencimiento);
                    TimeSpan diferenciaDias = DateTime.Now.Subtract(fechaVencimiento);
                    int diasFecha = int.Parse(diferenciaDias.Days.ToString());

                    if (diasFecha > 0 && finCae.Dias != 0)
                    {
                        SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                            ("!!!Atención!!! El rango se venció, fecha de vencimiento: " + cae.FechaVencimiento);
                    }
                    else
                    {
                        diasFecha = diasFecha * -1;

                        if (diasFecha <= finCae.Dias && finCae.Dias != 0)
                        {
                            SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                                ("!!!Atención!!! El rango se va vencer, fecha de vencimiento: " + cae.FechaVencimiento);
                        }
                    }
                }
                else
                {
                    cfe = null;
                }

                #endregion CAE

                #region Web Service
                cfe.OrigenFE = notaDebito.UserFields.Fields.Item("U_Origen").Value;
                #endregion Web Service
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("NotaDebitoB1/Error: " + ex.ToString());
            }
            finally
            {
                if (notaDebito != null)
                {
                    //Libera de memoria el obtejo notaDebito
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(notaDebito);
                    GC.Collect();
                }
            }

            return cfe;
        }
Exemple #20
0
 /// <summary>
 /// Constructor de la clase
 /// </summary>
 /// <param name="_infoComprobante"></param>
 /// <param name="_infoCAE"></param>
 public PDFs(CFE _infoComprobante, CAE _infoCAE, string _kilosComprobante)
 {
     this.infoComprobante  = _infoComprobante;
     this.infoCAE          = _infoCAE;
     this.kilosComprobante = _kilosComprobante;
 }
Exemple #21
0
 protected override void EstablecerDataBind()
 {
     Formulario.DataSources.UserDataSources.Item("udsSerie").Value = Serie;
     Formulario.DataSources.UserDataSources.Item("udsTipo").Value  = CFE.ObtenerStringTipoCFECFC(Tipo);
     Formulario.DataSources.UserDataSources.Item("udsNum").Value   = Numero;
 }
Exemple #22
0
 public CHARFORMAT(CFM mask, CFE effects)
     : this()
 {
     dwMask    = mask;
     dwEffects = effects;
 }
Exemple #23
0
        public static void SetDefaultCharFormat(this RichTextBox rtb, CFM mask, CFE effects)
        {
            CHARFORMAT cf = new CHARFORMAT(mask, effects);

            rtb.SetDefaultCharFormat(cf);
        }
Exemple #24
0
 public ParametrosJobWsDGI(string pRutaSobre, string pClaveSobre, string pUrlEnvio, string pUrlConsultas, CFE cfe, CAE cae)
 {
     this.RutaCertificado  = pRutaSobre;
     this.ClaveCertificado = pClaveSobre;
     this.UrlEnvio         = pUrlEnvio;
     this.UrlConsultas     = pUrlConsultas;
     this.cfe = cfe;
     this.cae = cae;
 }
Exemple #25
0
        /// <summary>
        /// Metodo para crear sobre para el comprobante
        /// </summary>
        /// <param name="cfe"></param>
        private Sobre CrearSobre(CFE cfe, bool sobreDgi)
        {
            Sobre  sobre           = new Sobre(cfe);
            string infoCertificado = "";

            try
            {
                infoCertificado = ProcTransformacion.ObtenerCadenaCertificado();

                if (infoCertificado.Equals(""))
                {
                    sobre = null;
                }
                else
                {
                    if (sobreDgi)
                    {
                        ManteUdoDocumento manteUdoDocumento = new ManteUdoDocumento();
                        string            rutConfigurado    = manteUdoDocumento.ObtenerRut();
                        //Proceso para DGI
                        if (rutConfigurado != null)
                        {
                            sobre.RucReceptor = rutConfigurado;//214844360018;//219999830019
                        }
                        else
                        {
                            sobre.RucReceptor = "214844360018";//219999830019
                        }
                        sobre.X509Certificate = infoCertificado;
                        sobre.ObtenerCertificadosCreados(listaCertificadosCreados);

                        string xmlSobreDGI = ProcSerializacion.CrearXmlSobre(sobre);

                        ProcTransformacion.GuardarSobrePrevio(sobre.NombrePrev, xmlSobreDGI, true);
                        ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, "", true);
                    }
                    else
                    {
                        //Proceso para Tercero

                        sobre.X509Certificate = infoCertificado;
                        sobre.ObtenerCertificadosCreados(listaCertificadosCreados);

                        string xmlSobreCliente = ProcSerializacion.CrearXmlSobre(sobre);

                        ProcTransformacion.GuardarSobrePrevio(sobre.NombrePrev, xmlSobreCliente, false);

                        if (!cfe.TextoLibreAdenda.Equals(""))
                        {
                            ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, cfe.TextoLibreAdenda, false);
                        }
                        else
                        {
                            ProcTransformacion.TransformarSobre(sobre.NombrePrev, sobre.Nombre, sobre.ListaCertificados, "", false);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ERROR: " + ex.ToString());
            }

            return(sobre);
        }
Exemple #26
0
        public CFE ObtenerDatosResguardo(int numResguardo, CAE.ESTipoCFECFC tipoCFE, string adenda)
        {
            Documents     resguardoCompras = null;
            CFE           cfe = new CFE();
            CFEItems      item;
            Emisor        emisor;
            Rango         rango = null;
            CFEMediosPago mediosPago;
            CAE           cae;

            descuentoGeneral           = 0;
            descuentoGeneralExtranjero = 0;

            try
            {
                resguardoCompras = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.oPurchaseInvoices);

                resguardoCompras.GetByKey(numResguardo);

                #region EMISOR

                emisor                        = this.ObtenerDatosEmisor() as Emisor;
                cfe.RucEmisor                 = emisor.Ruc;
                cfe.NombreEmisor              = emisor.Nombre;
                cfe.NombreComercialEmisor     = emisor.NombreComercial;
                cfe.NumeroResolucion          = emisor.NumeroResolucion;
                cfe.CodigoCasaPrincipalEmisor = this.ObtenerSucursal(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA);
                cfe.CajaEmisor                = this.ObtenerCaja(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA);
                cfe.DomicilioFiscalEmisor     = this.ObtenerDireccionEmisor();
                cfe.CiuidadEmisor             = this.ObtenerCiudadEmisor();
                cfe.DocumentoSAP              = resguardoCompras.DocEntry.ToString();
                cfe.EstadoDGI                 = CFE.ESEstadoCFE.PendienteDGI;
                cfe.EstadoReceptor            = CFE.ESEstadoCFE.PendienteReceptor;

                #endregion EMISOR

                #region RECEPTOR

                cfe.TipoDocumentoReceptor = CFE.ObtenerTipoDocumentoReceptor(resguardoCompras.UserFields.Fields.Item("U_TipDocFA").Value);
                cfe.CodigoPaisReceptor    = this.ObtenerCodPaisReceptor(resguardoCompras.CardCode, cfe.TipoDocumentoReceptor);
                cfe.NombreReceptor        = resguardoCompras.CardName;

                if (cfe.PaisReceptor.Equals("UY"))
                {
                    cfe.NumDocReceptorUruguayo = resguardoCompras.UserFields.Fields.Item("U_ValDocFA").Value;
                }
                else
                {
                    cfe.NumDocReceptorExtrangero = resguardoCompras.UserFields.Fields.Item("U_ValDocFA").Value;
                }

                //cfe.CiuidadReceptor = resguardoCompras.Address.Replace("\r", "");
                cfe.CiuidadReceptor = this.ObtenerCiudad(resguardoCompras.DocEntry, "PCH12");
                cfe.PaisReceptor    = this.ObtenerNombPaisReceptor(resguardoCompras.CardCode);
                cfe.CorreoReceptor  = this.ObtenerCorreoReceptor(resguardoCompras.CardCode);
                //cfe.DireccionReceptor = cfe.CiuidadReceptor;// +" " + cfe.PaisReceptor;
                cfe.DireccionReceptor    = this.ObtenerCiudad(resguardoCompras.DocEntry, "PCH12");
                cfe.NumeroCompraReceptor = this.ObtenerNroPedidoReceptor(resguardoCompras.DocEntry, TABLA_RESGUARDO_COMPRA);

                #endregion RECEPTOR

                #region TOTALES ENCABEZADO

                cfe.TipoModena = this.ObtenerCodigoISOModena(resguardoCompras.DocCurrency);

                ManteUdoTipoCambio manteUdoTipoCambio = new ManteUdoTipoCambio();
                string             temp = "", confTC = manteUdoTipoCambio.ObtenerConfiguracion(out temp);

                if (confTC.Equals("N"))
                {
                    double docRate = this.ObtenerDocRate();

                    if (cfe.TipoModena == "UYU" || cfe.TipoModena == "UY")
                    {
                        cfe.TipoCambio = 1;
                    }
                    else
                    {
                        if (docRate > 0)
                        {
                            cfe.TipoCambio = 1 / docRate;
                            cfe.TipoCambio = Math.Round(cfe.TipoCambio, 2);
                        }
                    }
                }

                else
                {
                    cfe.TipoCambio = resguardoCompras.DocRate;
                }

                cfe.Lineas = resguardoCompras.Lines.Count;

                //CFERetencPercep retPer = ObtenerRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5") as CFERetencPercep;

                //cfe.AgregarRetencPercep(retPer);

                List <CFERetencPercep> listretPer = ObtenerRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5", resguardoCompras.DocCurrency.ToString()) as List <CFERetencPercep>;

                // SE CARGA EN VLORES de reneciones
                for (int i = 0; i < listretPer.Count; i++)
                {
                    cfe.AgregarRetencPercep(listretPer[i]);
                }


                #endregion TOTALES ENCABEZADO

                #region ITEMS

                List <CFEItemsRetencPercep> listaItemRecPerc = this.ObtenerItemRetencionPercepcion(resguardoCompras.DocEntry.ToString(), "PCH5", resguardoCompras.DocCurrency.ToString()) as List <CFEItemsRetencPercep>;

                for (int i = 0; i < listaItemRecPerc.Count; i++)
                {
                    //Nueva instancia del objeto item de cfe
                    item = cfe.NuevoItem();

                    item.AgregarItemRetencPercep(listaItemRecPerc[i]);


                    item.IndicadorFacturacion = 4;

                    item.NumeroLinea = i + 1;

                    cfe.AgregarItem(item);
                }

                descuentoGeneral           = resguardoCompras.TotalDiscount;
                descuentoGeneralExtranjero = resguardoCompras.TotalDiscountFC;

                cfe.Lineas = listaItemRecPerc.Count;

                #endregion ITEMS

                #region MEDIOS DE PAGO

                mediosPago       = cfe.NuevoMediosPago();
                mediosPago.Glosa = this.ObtenerMedioPago(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA);
                cfe.AgregarMediosPago(mediosPago);

                #endregion MEDIOS DE PAGO

                descuentoGeneral           = resguardoCompras.TotalDiscount;
                descuentoGeneralExtranjero = resguardoCompras.TotalDiscountFC;

                #region IDENTIFICACION DEL COMPROBANTE

                //Valida que el documento sea de contingencia
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardoContingencia));
                }
                //Si no es contingencia
                else
                {
                    cfe.TipoCFE = CFE.ObtenerTipoCFECFC(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo));
                    rango       = this.ObtenerDatosRangoCFE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo), cfe.CodigoCasaPrincipalEmisor.ToString(), cfe.CajaEmisor) as Rango;
                }

                //Estado de contigencia serie y numero se ingresan manualmente
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    Item txtNumCFE = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtNumCFE");
                    Item txtSeCFE  = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm.Items.Item("txtSeCFE");

                    cfe.SerieComprobante  = ((SAPbouiCOM.EditText)txtSeCFE.Specific).Value + "";
                    cfe.NumeroComprobante = int.Parse((((SAPbouiCOM.EditText)txtNumCFE.Specific).Value + "")) + 1;
                }
                else
                {
                    if (rango != null)
                    {
                        cfe.SerieComprobante  = rango.Serie;
                        cfe.NumeroComprobante = rango.NumeroActual;
                    }
                }

                cfe.FechaComprobante = resguardoCompras.DocDate.ToString("yyyy-MM-dd");
                cfe.FechaVencimiento = resguardoCompras.DocDueDate.ToString("yyyy-MM-dd");

                if (resguardoCompras.DocType == BoDocumentTypes.dDocument_Items)
                {
                    cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Articulo;
                }
                else if (resguardoCompras.DocType == BoDocumentTypes.dDocument_Service)
                {
                    cfe.TipoDocumentoSAP = CFE.ESTIpoDocumentoSAP.Servicio;
                }

                if (resguardoCompras.DocumentStatus == BoStatus.bost_Close)
                {
                    cfe.FormaPago = CFE.ESFormaPago.Contado;
                }
                else
                {
                    cfe.FormaPago = CFE.ESFormaPago.Credito;
                }

                #endregion IDENTIFICACION DEL COMPROBANTE

                #region ADENDA

                //ManteUdoAdenda manteUdoAdenda = new ManteUdoAdenda();
                //Adenda adenda = manteUdoAdenda.ObtenerAdenda(ProcConexion.Comp, Adenda.ESTipoObjetoAsignado.TipoCFE111, resguardo.DocNum.ToString());

                //if (tipoCFE == CAE.ESTipoCFECFC.EResguardo)
                //{
                //    resguardo.UserFields.Fields.Item("U_AdendaRG").Value = adenda.CadenaAdenda;// resguardo.UserFields.Fields.Item("U_AdendaFA").Value;
                //    resguardo.Update();
                //}

                //cfe.TextoLibreAdenda = adenda.CadenaAdenda;
                //cfe.TextoLibreAdenda = resguardo.UserFields.Fields.Item("U_AdendaFA").Value;

                cfe.TextoLibreAdenda = adenda;

                #endregion ADENDA

                #region DOCUMENTOS DE REFENCIA

                List <CFEInfoReferencia> listaRef = this.ObtenerReferenciaResguardo(resguardoCompras.DocEntry.ToString(), TABLA_RESGUARDO_COMPRA) as List <CFEInfoReferencia>;

                for (int i = 0; i < listaRef.Count; i++)
                {
                    cfe.AgregarInfoReferencia(listaRef[i]);
                }

                #endregion DOCUMENTOS DE REFENCIA

                #region CAE

                //Valida que el documento sea de contingencia
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.Contingencia)) as CAE;
                }//Si no es contingencia
                else
                {
                    cae = this.ObtenerDatosCAE(CAE.ObtenerStringTipoCFECFC(CAE.ESTipoCFECFC.EResguardo)) as CAE;
                }

                if (cae.NumeroAutorizacion != null)
                {
                    cfe.NumeroCAE           = long.Parse(cae.NumeroAutorizacion);
                    cfe.NumeroInicialCAE    = cae.NumeroDesde;
                    cfe.NumeroFinalCAE      = cae.NumeroHasta;
                    cfe.FechaVencimientoCAE = cae.FechaVencimiento;

                    ManteDocumentos manteDocumentos = new ManteDocumentos();
                    FinCae          finCae          = manteDocumentos.ObtenerAlertaCAE();

                    if ((cae.NumeroHasta - rango.NumeroActual) <= finCae.Cantidad)
                    {
                        SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                            ("!!!Atención!!!  Rango utilizado: " + rango.NumeroActual + " de: " + cae.NumeroHasta +
                            ". Solicitar Nuevos CAEs a DGI.");
                    }

                    DateTime fechaVencimiento = DateTime.Parse(cae.FechaVencimiento);
                    TimeSpan diferenciaDias   = DateTime.Now.Subtract(fechaVencimiento);
                    int      diasFecha        = int.Parse(diferenciaDias.Days.ToString());

                    if (diasFecha > 0 && finCae.Dias != 0)
                    {
                        SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                            ("!!!Atención!!! El rango se venció, fecha de vencimiento: " + cae.FechaVencimiento);
                    }
                    else
                    {
                        diasFecha = diasFecha * -1;

                        if (diasFecha <= finCae.Dias && finCae.Dias != 0)
                        {
                            SAPbouiCOM.Framework.Application.SBO_Application.MessageBox
                                ("!!!Atención!!! El rango se va vencer, fecha de vencimiento: " + cae.FechaVencimiento);
                        }
                    }
                }
                else
                {
                    cfe = null;
                }

                #endregion CAE
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("ResguardoCompra/Error: " + ex.ToString());
            }
            finally
            {
                if (resguardoCompras != null)
                {
                    //Libera de memoria el objeto resguardoCompras
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(resguardoCompras);
                    GC.Collect();
                }
            }

            return(cfe);
        }
 public CHARFORMAT(CFM mask, CFE effects)
     : this()
 {
     cbSize = Marshal.SizeOf(this);
     dwMask = mask;
     dwEffects = effects;
     szFaceName = "";
 }
Exemple #28
0
        /// <summary>
        /// Realiza todas las validaciones indicadas en la documentacion oficial Formato_CFE_v10
        /// </summary>
        /// <param name="cfe"></param>
        /// <returns></returns>
        public static bool ValidarCFE(ref CFE cfe)
        {
            //Valida la Fecha del Comprobante
            if (!FechaComprobante(cfe.FechaComprobante.ToString()))
            {
                cfe.CampoErroneo = "FechaComprobante";
                return(false);
            }

            //Valida el Perdiodo Desde
            if (!PerdiodoDesde(cfe.PeriodoDesde.ToString()))
            {
                cfe.CampoErroneo = "PeriodoDesde";
                return(false);
            }

            //Valida PeriodoHasta
            if (!PeriodoHasta(cfe.PeriodoDesde.ToString(), cfe.PeriodoHasta.ToString()))
            {
                cfe.CampoErroneo = "PeriodoHasta";
                return(false);
            }

            //Valida FechaVencimiento
            if (!FechaVencimiento(cfe.FechaVencimiento.ToString()))
            {
                cfe.CampoErroneo = "FechaVencimiento";
                return(false);
            }

            //Valida FechaComprobanteReferencia
            foreach (CFEInfoReferencia infoReferencia in cfe.InfoReferencia)
            {
                if (!FechaCFEReferencia(infoReferencia.FechaComprobanteReferencia.ToString()))
                {
                    cfe.CampoErroneo = "InfoReferencia.FechaComprobanteReferencia";
                    return(false);
                }
            }

            //Valida FechaVencimientoCAE
            if (!FechaVencimientoCAE(cfe.FechaVencimientoCAE.ToString()))
            {
                cfe.CampoErroneo = "FechaVencimientoCAE";
                return(false);
            }

            //Valida TipoDocumentoReceptor
            if (!TipoDocumentoReceptor(cfe.TipoCFE, cfe.TipoDocumentoReceptor, cfe.CodigoPaisReceptor, cfe.NumDocReceptorUruguayo, cfe.NumDocReceptorExtrangero,
                                       cfe.TotalMontoNoGravado, cfe.TotalMontoExportacionAsimilados, cfe.TotalMontoImpuestoPercibido, cfe.TotalMontoIVASuspenso, cfe.TotalMontoNetoIVATasaMinima,
                                       cfe.TotalMontoNetoIVATasaBasica, cfe.TotalMontoNetoIVAOtraTasa))

            {
                cfe.CampoErroneo = "TipoDocumentoReceptor";
                return(false);
            }

            //Valida CodigoPaisReceptor
            if (!CodigoPaisReceptor(cfe.TipoDocumentoReceptor, cfe.CodigoPaisReceptor, cfe.NumDocReceptorUruguayo, cfe.NumDocReceptorExtrangero))
            {
                cfe.CampoErroneo = "CodigoPaisReceptor";
                return(false);
            }

            ////Valida NumDocReceptorUruguayo
            //if (!NumDocReceptorUruguayo(cfe.TipoDocumentoReceptor, cfe.CodigoPaisReceptor, cfe.NumDocReceptorUruguayo, cfe.NumDocReceptorExtrangero))
            //{
            //    cfe.CampoErroneo = "NumDocReceptorUruguayo";
            //    return false;
            //}

            ////Valida NumDocReceptorExtrangero
            //if (!NumDocReceptorExtrangero(cfe.TipoDocumentoReceptor, cfe.NumDocReceptorUruguayo, cfe.NumDocReceptorExtrangero))
            //{
            //    cfe.CampoErroneo = "NumDocReceptorExtrangero";
            //    return false;
            //}

            //Valida TipoCambio
            if (!TipoCambio(cfe.TipoModena, cfe.TipoCambio))
            {
                cfe.CampoErroneo = "TipoCambio";
                return(false);
            }

            //Valida MontoDescuentoItem
            foreach (CFEItems item in cfe.Items)
            {
                if (!MontoDescuentoItem(item.PorcentajeDescuentoItem, item.MontoDescuentoItem))
                {
                    cfe.CampoErroneo = "Items.MontoDescuentoItem";
                    return(false);
                }
            }

            //Valida MontoRecargoItem
            foreach (CFEItems item in cfe.Items)
            {
                if (!MontoRecargoItem(item.PorcentajeRecargoItem, item.MontoRecargoItem))
                {
                    cfe.CampoErroneo = "Items.MontoRecargoItem";
                    return(false);
                }
            }

            //Valida RazonReferencia
            foreach (CFEInfoReferencia infoReferencia in cfe.InfoReferencia)
            {
                if (!RazonReferencia(infoReferencia.IndicadorReferenciaGlobal, infoReferencia.RazonReferencia))
                {
                    cfe.CampoErroneo = "InfoReferencia.RazonReferencia";
                    return(false);
                }
            }

            return(true);
        }
Exemple #29
0
        /// <summary>
        /// Campos obligatorios
        /// </summary>
        /// <param name="cfe"></param>
        /// <returns></returns>
        public static bool CamposObligatorios(ref CFE cfe)
        {
            bool salida = true;

            //Valida Version
            if (cfe.Version == "")
            {
                cfe.CampoFaltante = "Version";
                salida            = false;
            }

            //Valida Tipo CFE
            if (cfe.TipoCFE == 0)
            {
                cfe.CampoFaltante = "TipoCFE";
                salida            = false;
            }

            //Valida Serie del Comprobante
            if (cfe.SerieComprobante == "")
            {
                cfe.CampoFaltante = "SerieComprobante";
                salida            = false;
            }

            //Valida Número de Comprobante
            if (cfe.NumeroComprobante == 0)
            {
                cfe.CampoFaltante = "NumeroComprobante";
                salida            = false;
            }

            //Valida Fecha del Comprobante
            if (cfe.FechaComprobante.Equals(""))
            {
                cfe.CampoFaltante = "FechaComprobante";
                salida            = false;
            }

            //Valida RUC Emisor
            if (cfe.RucEmisor == 0)
            {
                cfe.CampoFaltante = "RucEmisor";
                salida            = false;
            }

            //Valida Código Casa Principal /Sucursal
            if (cfe.CodigoCasaPrincipalEmisor.Equals("0"))
            {
                cfe.CampoFaltante = "CodigoCasaPrincipalEmisor";
                salida            = false;
            }

            //Valida Tipo Documento Receptor
            if (cfe.TipoDocumentoReceptor == 0)
            {
                cfe.CampoFaltante = "TipoDocumentoReceptor";
                salida            = false;
            }

            //Valida Código País Receptor
            if (cfe.CodigoPaisReceptor == "")
            {
                cfe.CampoFaltante = "CodigoPaisReceptor";
                salida            = false;
            }

            //Valida No Documento Receptor
            if (cfe.NumDocReceptor == "")
            {
                cfe.CampoFaltante = "NumDocReceptor";
                salida            = false;
            }

            //Valida Tipo moneda transacción
            if (cfe.TipoModena == "")
            {
                cfe.CampoFaltante = "TipoModena";
                salida            = false;
            }

            //Valida Tipo de Cambio
            if (cfe.TipoCambio == 0)
            {
                cfe.CampoFaltante = "TipoCambio";
                salida            = false;
            }

            //Valida Total IVA – Tasa Mínima
            if (cfe.TotalIVATasaMinima == 0)
            {
                cfe.CampoFaltante = "TotalIVATasaMinima";
                salida            = false;
            }

            //Valida Total IVA – Tasa Básica
            if (cfe.TotalIVATasaBasica == 0)
            {
                cfe.CampoFaltante = "TotalIVATasaBasica";
                salida            = false;
            }

            //Valida Total Monto Total
            if (cfe.TotalMontoTotal == 0)
            {
                cfe.CampoFaltante = "TotalMontoTotal";
                salida            = false;
            }

            //Valida Total Monto Retenido/Percibido
            if (cfe.TotalMontoRetenidoPercibido == 0)
            {
                cfe.CampoFaltante = "TotalMontoRetenidoPercibido";
                salida            = false;
            }

            //Valida Líneas
            if (cfe.Lineas == 0)
            {
                cfe.CampoFaltante = "Lineas";
                salida            = false;
            }

            //Valida Código de Retención/ Percepción
            foreach (CFERetencPercep retencPercep in cfe.RetencionPercepcion)
            {
                if (retencPercep.CodigoRetencPercep == "")
                {
                    cfe.CampoFaltante = "RetencionPercepcion.CodigoRetencPercep";
                    salida            = false;
                }
            }

            //Valida Valor de la retención/ percepción
            foreach (CFERetencPercep retencPercep in cfe.RetencionPercepcion)
            {
                if (retencPercep.ValorRetencPercep == 0)
                {
                    cfe.CampoFaltante = "RetencionPercepcion.ValorRetencPercep";
                    salida            = false;
                }
            }

            return(salida);
        }
Exemple #30
0
        /// <summary>
        /// Metodo que llama a la generacion de documentos de tipo pdf
        /// Firmados digitalmente
        /// </summary>
        /// <param name="cfe"></param>
        /// <param name="cae"></param>
        /// <param name="kilosFactura"></param>
        /// <param name="tabla"></param>
        /// <param name="descuentoGeneral"></param>
        public void CrearPDF(CFE cfe, CAE cae, DatosPDF datosPdf, string tabla, List <ResguardoPdf> resguardoPdf, string tablaCabezal)
        {
            try
            {
                if (cae != null)
                {
                    RutasCarpetas rutas = new RutasCarpetas();
                    rutas.generarCarpetas();

                    //Llamada a metodo para comprobar si hay datos de firma digital
                    ObtenerFirmaDigital();

                    //Crear instancia de Pdfs
                    pdfs = new PDFs(cfe, cae, datosPdf.KilosFactura);

                    ////Se genera el archivo xml
                    //ArchivoXml archXml = new ArchivoXml();
                    //archXml.generarXml(cfe, cae);

                    //Crear pdf y validar creacion
                    #region Proceso_WebService
                    if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal))
                    //if (pdfs.CrearPDF(tabla, datosPdf, resguardoPdf, tablaCabezal, cfe.OrigenFE)) *** Se comenta porque se hace esto para todos los casos!
                    #endregion Proceso_WebService
                    {
                        if (EventosPagina.errorRutaLogo)
                        {
                            //Se informa al usuario de que la ruta especificada para el logo es incorrecta
                            app.MessageBox(Mensaje.errRutaLogoIncorrecta);
                            EventosPagina.errorRutaLogo = false;
                        }

                        if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.sucFactura, AdminEventosUI.tipoMensajes.exito);
                        }
                        else
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.sucFacturaCorreo, AdminEventosUI.tipoMensajes.exito);
                        }
                    }
                    else
                    {
                        if (!EventosPagina.errorRutaLogo && !PDFs.errorCertificado && !PDFs.errorFirma && !PDFs.errorCorreo && !PDFs.errorImprimir)
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.errFalloGenerarPdf, AdminEventosUI.tipoMensajes.error);
                        }
                        if (EventosPagina.errorRutaLogo)
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.errRutaLogoIncorrecta, AdminEventosUI.tipoMensajes.error);
                            EventosPagina.errorRutaLogo = false;
                        }

                        if (PDFs.errorCertificado)
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.errDatosNoConfigurados, AdminEventosUI.tipoMensajes.error);
                            PDFs.errorCertificado = false;
                        }

                        if (PDFs.errorFirma)
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.errFalloFirmaPdf, AdminEventosUI.tipoMensajes.error);
                            PDFs.errorFirma = false;
                        }

                        if (PDFs.errorCorreo)
                        {
                            if (Mail.errorCorreo.Equals(""))
                            {
                                AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCorreo, AdminEventosUI.tipoMensajes.error);
                            }
                            else
                            {
                                AdminEventosUI.mostrarMensaje(Mensaje.err + Mail.errorCorreo, AdminEventosUI.tipoMensajes.error);
                            }
                            PDFs.errorCorreo = false;
                        }
                        if (PDFs.errorImprimir)
                        {
                            AdminEventosUI.mostrarMensaje(Mensaje.errFalloImprimirPdf, AdminEventosUI.tipoMensajes.error);
                            PDFs.errorImprimir = false;
                        }
                    }
                }
                else
                {
                    AdminEventosUI.mostrarMensaje(Mensaje.errConfErroneaCae, AdminEventosUI.tipoMensajes.error);
                }
            }
            catch (Exception ex)
            {
                app.MessageBox("JobEnvioSobre/Error: " + ex.ToString());
            }
        }
Exemple #31
0
 // ReSharper disable InconsistentNaming
 /// <summary>
 /// Converts a <see cref="CFE"/> constant to a <see cref="FontStyle"/>
 /// </summary>
 /// <param name="dwEffects">The <see cref="CFE"/> to convert</param>
 /// <returns>A <see cref="FontStyle"/></returns>
 public static FontStyle CFE_ToFontStyle(CFE dwEffects)
 {
     return(CFM_ToFontStyle((CFM)dwEffects));
 }
Exemple #32
0
 public static void SetDefaultCharFormat(this RichTextBox rtb, CFM mask, CFE effects)
 {
     CHARFORMAT cf = new CHARFORMAT(mask, effects);
     rtb.SetDefaultCharFormat(cf);
 }
Exemple #33
0
 public CHARFORMAT(CFM mask, CFE effects)
     : this()
 {
     dwMask = mask;
     dwEffects = effects;
 }
 // ReSharper disable InconsistentNaming
 /// <summary>
 /// Converts a <see cref="CFE"/> constant to a <see cref="FontStyle"/>
 /// </summary>
 /// <param name="dwEffects">The <see cref="CFE"/> to convert</param>
 /// <returns>A <see cref="FontStyle"/></returns>
 public static FontStyle CFE_ToFontStyle(CFE dwEffects)
 {
     return CFM_ToFontStyle((CFM)dwEffects);
 }