Beispiel #1
0
        /// <summary>
        /// Ingresa los valores iniciales a la tabla
        /// </summary>
        private void Almacenar()
        {
            CAE cae;

            string valor;

            //Valida que la matriz contenga información. Si no tiene se ingresa los datos como registros nuevos
            if (matriz.RowCount == 0)
            {
                foreach (CAE.ESTipoCFECFC tipoCae in Enum.GetValues(typeof(CAE.ESTipoCFECFC)))
                {
                    valor = CAE.ObtenerStringTipoCFECFC(tipoCae);

                    //Crear nueva instanacia del mantenimiento de tipos de documentos a conservar
                    ManteUdoDocCon manteUdoDocCon = new ManteUdoDocCon();

                    //Crea una nueva instancia del objeto cae
                    cae                    = new CAE();
                    cae.TipoCFE            = tipoCae;
                    cae.NombreDocumento    = CAE.ObtenerNombreCFECFC(((int)tipoCae).ToString());
                    cae.IndicadorConservar = "Y";

                    //Almacenar el registro
                    manteUdoDocCon.Almacenar(cae);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Actualiza los datos en la tabla de la base de datos
        /// </summary>
        public void Actualizar()
        {
            CAE    cae;
            string numeroRegistro;

            //Actualizar data source
            matriz.FlushToDataSource();

            //Crear nueva instanacia del mantenimiento de tipos de documentos a conservar
            ManteUdoDocCon manteUdoDocCon = new ManteUdoDocCon();

            //Obtener valores del data source
            for (int i = 0; i < dbdsMatriz.Size; i++)
            {
                //Crear nuevo objeto cae
                cae = new CAE();

                //Obtener valores por linea
                numeroRegistro = dbdsMatriz.GetValue("DocEntry", i);

                cae.TipoCFE            = CAE.ObtenerTipoCFECFC(dbdsMatriz.GetValue("U_TipoDoc", i));
                cae.NombreDocumento    = dbdsMatriz.GetValue("U_NombDoc", i);
                cae.IndicadorConservar = dbdsMatriz.GetValue("U_IndCon", i);

                //Actualizar la información del registro recorrido
                manteUdoDocCon.Actualizar(cae, numeroRegistro);
            }
        }
Beispiel #3
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();
                //}
            }
        }
Beispiel #4
0
        /// <summary>
        /// Almacena un nuevo registro en la tabla de CAE's
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="cae"></param>
        /// <returns></returns>
        public bool Almacenar(CAE cae, out string idCAE)
        {
            bool resultado = false;

            idCAE = "";

            GeneralService servicioGeneral = null;
            GeneralData    dataGeneral     = null;


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

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

                //Establecer los valores para las propiedades
                dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString());
                dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento);
                dataGeneral.SetProperty("U_Sucursal", cae.Sucursal);
                dataGeneral.SetProperty("U_Caja", QuitarGuion(cae.Caja));
                dataGeneral.SetProperty("U_Serie", cae.Serie.ToUpper());
                dataGeneral.SetProperty("U_NumIni", cae.NumeroDesde.ToString());
                dataGeneral.SetProperty("U_NumFin", cae.NumeroHasta.ToString());
                dataGeneral.SetProperty("U_TipAut", cae.TipoAutorizacion);
                dataGeneral.SetProperty("U_NumAut", cae.NumeroAutorizacion);
                dataGeneral.SetProperty("U_ValDesde", cae.FechaEmision);
                dataGeneral.SetProperty("U_ValHasta", cae.FechaVencimiento);

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

                //Consulta el DocEntry generado para el cae recien ingresado
                idCAE = ConsultarNumeroRangoCreado(cae);

                resultado = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por objeto dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por objeto servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Beispiel #5
0
 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;
 }
Beispiel #6
0
        /// <summary>
        /// Actualiza los datos de un tipo de documento a conservar determinado
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="cae"></param>
        /// <param name="numeroRegistro"></param>
        /// <returns></returns>
        public bool Actualizar(CAE cae, string numeroRegistro)
        {
            bool resultado = false;

            GeneralService    servicioGeneral = null;
            GeneralData       dataGeneral     = null;
            GeneralDataParams parametros      = null;

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

                //Obtener lista de parametros
                parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams);

                //Establecer parametros
                parametros.SetProperty("DocEntry", numeroRegistro);

                //Apuntar al udo que corresponde con los parametros
                dataGeneral = servicioGeneral.GetByParams(parametros);

                //Establecer los valores para las propiedades
                dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString());
                dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento);
                dataGeneral.SetProperty("U_IndCon", cae.IndicadorConservar);

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

                resultado = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                if (parametros != null)
                {
                    //Liberar memoria utlizada por el objeto parametros
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros);
                    System.GC.Collect();
                }
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Beispiel #7
0
        /// <summary>
        /// Toma los valores del formulario para almacenarlos en la base de datos.
        /// <para>0=Valores ingresados.</para>
        /// <para>1=Valores no ingresados.</para>
        /// <para>2=Valores no validos</para>
        /// <para>3=Rango no ingresado</para>
        /// </summary>
        /// <returns></returns>
        public int Almacenar()
        {
            bool   resultado;
            string idCae;

            if (Validar())
            {
                //Crea un nuevo objeto CAE
                CAE cae = new CAE();

                //Obtiene el valor del tipo y el nombre del documento según la seleccion en el combo box
                cae.TipoCFE         = CAE.ObtenerTipoCFECFC(((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Selected.Value);
                cae.NombreDocumento = CAE.ObtenerNombreCFECFC(((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Selected.Value);

                //Obtiene el nombre de la sucursal selccionada
                cae.Sucursal = ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Selected != null ? ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Selected.Value : "";

                //Establece los otros valores del objeto cae con los valores ingresados en los campos de texto
                cae.Caja               = ((EditText)Formulario.Items.Item("txtCaja").Specific).String;
                cae.Serie              = ((EditText)Formulario.Items.Item("txtSerie").Specific).String;
                cae.NumeroDesde        = int.Parse(((EditText)Formulario.Items.Item("txtNumIn").Specific).String);
                cae.NumeroHasta        = int.Parse(((EditText)Formulario.Items.Item("txtNumFn").Specific).String);
                cae.TipoAutorizacion   = ((EditText)Formulario.Items.Item("txtTipAut").Specific).String;
                cae.NumeroAutorizacion = ((EditText)Formulario.Items.Item("txtNumAut").Specific).String;
                cae.FechaEmision       = ((EditText)Formulario.Items.Item("txtValDes").Specific).String;
                cae.FechaVencimiento   = ((EditText)Formulario.Items.Item("txtValHa").Specific).String;

                //Crea nueva instancia de mantenimiento de CAE,s
                ManteUdoCAE manteUdoCae = new ManteUdoCAE();

                resultado = manteUdoCae.Almacenar(cae, out idCae);

                if (resultado)
                {
                    //Crear una nueva instancia de mantenimiento de rangos
                    ManteUdoRango manteUdoRango = new ManteUdoRango();

                    //Creaer un nuevo objeto rango
                    Rango rango = new Rango(cae.TipoCFE, cae.NumeroDesde, cae.NumeroHasta, cae.NumeroDesde, cae.Serie, cae.FechaEmision, cae.FechaVencimiento, idCae, "N");

                    //Alamcenar Rango en tabla de rangos
                    if (manteUdoRango.Almacenar(rango))
                    {
                        return(0);//Valores ingresados
                    }
                    else
                    {
                        return(3);//Rango no ingresado
                    }
                }
                else
                {
                    return(1);//Valores no ingresados
                }
            }

            return(2);//Valores no validos
        }
Beispiel #8
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);
        }
Beispiel #9
0
        /// <summary>
        /// Realiza la consulta de un rango CAE según el tipo de documento y la serie
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="numeroRango"></param>
        /// <returns></returns>
        public CAE Consultar(string tipoDocumento, string serie)
        {
            Recordset recSet   = null;
            string    consulta = "";
            CAE       cae      = null;

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

                //Establecer consulta
                consulta = "SELECT T1.U_TipoDoc, U_NombDoc, T1.U_Serie, T1.U_NumIni, T1.U_NumFin, U_TipAut, U_NumAut, " +
                           "CONVERT(VARCHAR(10), T1.U_ValDesde, 103) AS U_ValDesde, CONVERT(VARCHAR(10), T1.U_ValHasta, 103) " +
                           " AS U_ValHasta, U_Sucursal, U_Caja FROM [@TFECAE] AS T1 INNER JOIN [@TFERANGO] AS T2 ON T1.DocEntry " +
                           "= T2.U_IdCAE AND T2.U_Activo = 'Y' WHERE T1.U_TipoDoc = '" + tipoDocumento + "' AND T1.U_Serie = '" + serie + "'";

                //Ejecutar consulta
                recSet.DoQuery(consulta);

                //Validar que se hayan obtenido resultado
                if (recSet.RecordCount > 0)
                {
                    //Crear nuevo objeto CAE
                    cae = new CAE();

                    //Establezco los valores del cae con los valores obtenidos en la consulta
                    cae.TipoCFE            = CAE.ObtenerTipoCFECFC(recSet.Fields.Item("U_TipoDoc").Value + "");
                    cae.NombreDocumento    = CAE.ObtenerNombreCFECFC(recSet.Fields.Item("U_TipoDoc").Value + "");
                    cae.Sucursal           = ""; // recSet.Fields.Item("U_Sucursal").Value + "";
                    cae.Caja               = recSet.Fields.Item("U_Caja").Value + "";
                    cae.Serie              = recSet.Fields.Item("U_Serie").Value + "";
                    cae.NumeroDesde        = int.Parse(recSet.Fields.Item("U_NumIni").Value + "");
                    cae.NumeroHasta        = int.Parse(recSet.Fields.Item("U_NumFin").Value + "");
                    cae.TipoAutorizacion   = recSet.Fields.Item("U_TipAut").Value + "";
                    cae.NumeroAutorizacion = recSet.Fields.Item("U_NumAut").Value + "";
                    cae.FechaEmision       = recSet.Fields.Item("U_ValDesde").Value + "";
                    cae.FechaVencimiento   = recSet.Fields.Item("U_ValHasta").Value + "";
                }
            }
            catch (Exception)
            {
                cae = null;
            }
            finally
            {
                if (recSet != null)
                {
                    //Liberar memoria utlizada por servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(cae);
        }
Beispiel #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);
            }
            // }
        }
Beispiel #11
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;
            }
        }
Beispiel #12
0
        /// <summary>
        /// Consulta el DocEntry del un rango en especifico
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        private string ConsultarNumeroRangoCreado(CAE cae)
        {
            Recordset recSet           = null;
            string    consulta         = "";
            string    DocEntryObtenido = "";

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

                //Establecer consulta
                consulta = "SELECT DocEntry FROM [@TFECAE] WHERE U_NumAut = '" + cae.NumeroAutorizacion +
                           "' AND U_TipoDoc = '" + ((int)cae.TipoCFE) + "' AND U_Serie = '" + cae.Serie + "'";
                //consulta = "SELECT DocEntry FROM [@TFECAE] WHERE U_NumAut = '" + cae.NumeroAutorizacion + "' AND";

                //Ejecutar consulta
                recSet.DoQuery(consulta);

                //Validar que se hayan obtenido resultado
                if (recSet.RecordCount > 0)
                {
                    DocEntryObtenido = recSet.Fields.Item("DocEntry").Value + "";
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                if (recSet != null)
                {
                    //Liberar memoria utlizada por servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }

            return(DocEntryObtenido);
        }
Beispiel #13
0
        /// <summary>
        /// Realiza la consulta de un rango determinado desde la base de datos y carga los valores en los campos correspondientes
        /// </summary>
        /// <param name="numeroRango"></param>
        private void Consultar(string numeroRango)
        {
            //Crear nuevo objeto CAE
            CAE cae = new CAE();

            //Crea nueva instancia de mantenimiento de CAE,s
            ManteUdoCAE manteUdoCae = new ManteUdoCAE();

            //Consultar rango por numero
            cae = manteUdoCae.Consultar(numeroRango);

            //Validar que se hayan obtenido valores
            if (cae != null)
            {
                //Congelar formulario
                Formulario.Freeze(true);

                //Posicionar valor del combo box de tipos de documentos
                ((ComboBox)Formulario.Items.Item("cmbTipDoc").Specific).Select(CAE.ObtenerStringTipoCFECFC(cae.TipoCFE), BoSearchKey.psk_ByValue);

                //Posicionar valor del combo box de tipos de documentos
                ((ComboBox)Formulario.Items.Item("cmbSuc").Specific).Select(cae.Sucursal, BoSearchKey.psk_ByValue);

                //Ingresar los valores en los respectivos campos de texto
                ((EditText)Formulario.Items.Item("txtCaja").Specific).String   = cae.Caja;
                ((EditText)Formulario.Items.Item("txtSerie").Specific).String  = cae.Serie;
                ((EditText)Formulario.Items.Item("txtNumIn").Specific).String  = cae.NumeroDesde.ToString();
                ((EditText)Formulario.Items.Item("txtNumFn").Specific).String  = cae.NumeroHasta.ToString();
                ((EditText)Formulario.Items.Item("txtTipAut").Specific).String = cae.TipoAutorizacion;
                ((EditText)Formulario.Items.Item("txtNumAut").Specific).String = cae.NumeroAutorizacion;
                ((EditText)Formulario.Items.Item("txtValDes").Specific).String = cae.FechaEmision;
                ((EditText)Formulario.Items.Item("txtValHa").Specific).String  = cae.FechaVencimiento;

                //Descongelar formulario
                Formulario.Freeze(false);
            }
        }
Beispiel #14
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());
            }
        }
        public void runFunction()
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            #region Создание общей папки

            folder.generalFolder = (param.r2 * 2).ToString();

            if (!Directory.Exists(folder.generalFolder))
            {
                Directory.CreateDirectory(folder.generalFolder);
            }

            #endregion

            string abaqusOutputFolder = Convert.ToString(param.r3 * 2) + "(d3)"
                                        + Convert.ToString(param.a) + "(angle)";

            folder.outputFolder = Path.Combine(folder.generalFolder, abaqusOutputFolder);

            if (!Directory.Exists(folder.outputFolder))
            {
                Directory.CreateDirectory(folder.outputFolder);
            }

            #region Пути для солида

            rout.stampFolder    = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.stamp);
            rout.stampFolder    = rout.stampFolder.Replace(@"\", "/");
            rout.blankFolder    = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.blank);
            rout.blankFolder    = rout.blankFolder.Replace(@"\", "/");
            rout.platformFolder = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.platform);
            rout.platformFolder = rout.platformFolder.Replace(@"\", "/");
            rout.ring1Folder    = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.ring1);
            rout.ring1Folder    = rout.ring1Folder.Replace(@"\", "/");
            rout.ring2Folder    = Path.Combine(Environment.CurrentDirectory, folder.outputFolder, file.ring2);
            rout.ring2Folder    = rout.ring2Folder.Replace(@"\", "/");

            #endregion

            rout.workingDirectory = folder.outputFolder;

            double r1   = 20;
            double temp = Math.Tan((90 - param.a) * Math.PI / 180);

            double h3 = Math.Tan((90 - param.a) * Math.PI / 180) * (r1 - param.r2);

            double h3Volume = (Math.PI * h3 * (Math.Pow(r1, 2) + r1 * param.r2 + Math.Pow(param.r2, 2))) / 3;

            double h4 = 15;

            double h4Volume = Math.PI * Math.Pow(param.r2, 2) * h4;

            double h5 = Math.Tan((90 - param.a) * Math.PI / 180) * (param.r2 - param.r3);

            double h5Volume = (Math.PI * h5 * (Math.Pow(param.r2, 2) + param.r2 * param.r3 + Math.Pow(param.r3, 2))) / 3;

            double h6 = h4;

            double h6Volume = Math.PI * Math.Pow(param.r3, 2) * h6;

            double blankVolume = h3Volume + h4Volume + h5Volume + h6Volume;

            param.blankHeight = blankVolume / (Math.PI * Math.Pow(r1, 2));

            param.goodBlankPosition = ((h3 + 85) + 15) + (h5);
            param.goodBlankPosition = Math.Round(param.goodBlankPosition, 2);

            param.badBlankPosition = param.goodBlankPosition + param.blankHeight;
            param.badBlankPosition = Math.Round(param.badBlankPosition, 2);

            param.platformPosition = param.badBlankPosition + param.blankHeight;
            param.platformPosition = Math.Round(param.platformPosition, 2);

            param.displacement = (param.blankHeight * 2) / 0.05;
            param.displacement = Math.Round(param.displacement, 1);

            var solid = new CAD();
            solid.UseSolid(file, param, rout);

            change.ChangeWordsInFile(rout, folder, file, param);

            var abaqus = new CAE();
            abaqus.runAbaqus(rout, cmd);

            change.RewriteExtract(rout, folder, file, param);

            var run = new DataProcessing(rout, cmd);
            run.Processing(file, param);
        }
Beispiel #16
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);
        }
Beispiel #17
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;
 }
Beispiel #18
0
        private void enviarFactura(int numeroDocumento, string formaPago, string adenda)
        {
            AdminEventosUI eventos = new AdminEventosUI(true);

            FacturaB1 facturaB1 = new FacturaB1();
            DatosPDF  datosPdf  = new DatosPDF();

            datosPdf = DocumentoB1.ObtenerkilosFactura(numeroDocumento, "INV1", datosPdf);
            datosPdf = DocumentoB1.ObtenerDatosPDF(numeroDocumento, "OINV", datosPdf);
            datosPdf.NombreVendedor   = DocumentoB1.ObtenerNombreVendedor(numeroDocumento, "OINV");
            datosPdf.NombreExtranjero = DocumentoB1.ObtenerNombreExtranjero(numeroDocumento, "OINV");
            datosPdf.Titular          = DocumentoB1.Titular(numeroDocumento, "OINV");
            datosPdf = DocumentoB1.ObtenerDatosDireccion(datosPdf);
            datosPdf = DocumentoB1.ActualizarEstado(datosPdf); //Saint
            datosPdf = DocumentoB1.ActualizarCodigo(datosPdf); //Saint
            datosPdf = DocumentoB1.ActualizarNumPedido(datosPdf);

            //Obtener el objeto cfe a partir de los datos del documento creado
            cfe = facturaB1.ObtenerDatosFactura(numeroDocumento, Objetos.CAE.ESTipoCFECFC.EFactura, formaPago, adenda);

            if (cfe != null)
            {
                if (FrmEstadoContingencia.estadoContingencia.Equals("Y"))
                {
                    cae = manteUdoCae.Consultar("999", cfe.SerieComprobante);
                }
                else
                {
                    cae = manteUdoCae.Consultar(cfe.TipoCFEInt.ToString(), cfe.SerieComprobante);
                }

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

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

                datosPdf.DescuentoGeneral    = FacturaB1.descuentoGeneral;
                datosPdf.DescuentoExtranjero = FacturaB1.descuentoGeneralExtranjero;
                datosPdf.PorcentajeDescuento = FacturaB1.porcentajeDescuento;

                eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", null, "OINV");

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

                cfe = null;
                cae = null;

                //Valida que el documento sea un resguardo
                if (manteDocumentos.ValidarDocumentoResguardo(numeroDocumento, "INV5"))
                {
                    ResguardoB1 resguardoB1 = new ResguardoB1();

                    //Obtener el objeto cfe a partir de los datos del documento creado
                    cfe = resguardoB1.ObtenerDatosResguardo(numeroDocumento, Objetos.CAE.ESTipoCFECFC.ERemito);


                    List <ResguardoPdf> resguardoPdf = DocumentoB1.ObtenerResguardoPdf(numeroDocumento, "OINV", "INV1", "INV5");

                    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
                        resguardoB1.ActualizarDatosCFEResguardo(int.Parse(cfe.DocumentoSAP), cfe.SerieComprobante, cfe.NumeroComprobante.ToString());

                        datosPdf.DescuentoGeneral = ResguardoB1.descuentoGeneral; datosPdf.DescuentoExtranjero = ResguardoB1.descuentoGeneralExtranjero;

                        eventos.EnviarDocumento(cfe, cae, datosPdf, "INV1", resguardoPdf, "OINV");

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

                        cfe = null;
                        cae = null;
                    }
                }
            }
        }
Beispiel #19
0
        /// <summary>
        /// Actualiza los datos de un rango determinado
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="cae"></param>
        /// <param name="numeroRango"></param>
        /// <returns></returns>
        public bool Actualizar(CAE cae, string numeroRango)
        {
            bool resultado = false;

            GeneralService    servicioGeneral = null;
            GeneralData       dataGeneral     = null;
            GeneralDataParams parametros      = null;

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

                //Obtener lista de parametros
                parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams);

                //Establecer parametros
                parametros.SetProperty("DocEntry", numeroRango);

                //Apuntar al udo que corresponde con los parametros
                dataGeneral = servicioGeneral.GetByParams(parametros);

                //Establecer los valores para las propiedades
                dataGeneral.SetProperty("U_TipoDoc", ((int)cae.TipoCFE).ToString());
                dataGeneral.SetProperty("U_NombDoc", cae.NombreDocumento);
                dataGeneral.SetProperty("U_Sucursal", cae.Sucursal);
                dataGeneral.SetProperty("U_Caja", QuitarGuion(cae.Caja));
                dataGeneral.SetProperty("U_Serie", cae.Serie.ToUpper());
                dataGeneral.SetProperty("U_NumIni", cae.NumeroDesde.ToString());
                dataGeneral.SetProperty("U_NumFin", cae.NumeroHasta.ToString());
                dataGeneral.SetProperty("U_TipAut", cae.TipoAutorizacion);
                dataGeneral.SetProperty("U_NumAut", cae.NumeroAutorizacion);
                dataGeneral.SetProperty("U_ValDesde", cae.FechaEmision);
                dataGeneral.SetProperty("U_ValHasta", cae.FechaVencimiento);

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

                resultado = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por objeto servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por objeto dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (parametros != null)
                {
                    //Liberar memoria utlizada por objeto parametros
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Beispiel #20
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;
        }
Beispiel #21
0
        //MAIN FUNCTION
        public void Compute(double[,] array, int counterStart, int kForNodes)
        {
            //model.stampAngle = array[i, 0];
            //model.stampAngle = Math.Round(model.stampAngle);

            model.stampAngle = model.startAngle;

            model.blankRadius = array[counterStart, 0];
            model.blankRadius = Math.Round(model.blankRadius, 2);

            model.friction = array[counterStart, 1];
            model.friction = Math.Round(model.friction, 2);

            model.dieRadius = (Math.Tan(model.stampAngle * Math.PI / 180) * 60) + 10;
            model.dieRadius = Math.Round(model.dieRadius, 1);
            //объём усеченного конуса (верхний радиус 10, нижний может меняться) 60 - высота усеченного конуса
            model.dieVolume = (Math.PI * 60 * (Math.Pow(model.dieRadius, 2) + model.dieRadius * 10 + Math.Pow(10, 2))) / 3;

            #region необходимо для вычесления облоя

            //3 - радиус скругления, 90 - градус
            double filletLength = Math.Tan((180 - (((90 + model.stampAngle) / 2) + 90)) * Math.PI / 180) * 3;

            double upperRadius = model.dieRadius + filletLength + 10;

            double angle30X = upperRadius - 5;

            double lowerVolume = Math.Pow((angle30X - 5), 2) * Math.PI * 1;

            model.dieVolume += lowerVolume;

            double shave = Math.Pow(angle30X, 2) * Math.PI * 1;

            shave -= lowerVolume;

            model.dieVolume = Math.Round(model.dieVolume, 1);

            #endregion

            model.blankUpperRadius = model.blankRadius - (Math.Tan(model.stampAngle * Math.PI / 180) * 2);
            model.blankPosition    = (Math.PI * 2 * (Math.Pow(model.blankRadius, 2) + model.blankRadius * (model.blankUpperRadius) + Math.Pow((model.blankUpperRadius), 2))) / 3;
            model.blankPosition    = Math.Round(model.blankPosition, 2);

            //объем цилиндра, не считая фаску (как будто её нет,а заготовка имеет форму просто цилиндра)
            double abstractRadiusVolume = Math.PI * Math.Pow(model.blankRadius, 2) * 2;
            double blankVolume          = model.dieVolume + (abstractRadiusVolume - model.blankPosition);

            //объём зазора между матрицей и площадкой
            blankVolume += shave;

            model.blankHeight = blankVolume / (Math.PI * Math.Pow(model.blankRadius, 2));
            model.blankHeight = Math.Round(model.blankHeight, 2);

            double radiusAfterLowerFillet = angle30X - 5;

            double radiusHeightInStamp;

            radiusHeightInStamp = 60 * ((radiusAfterLowerFillet - model.blankRadius) / (radiusAfterLowerFillet - 10));

            //необходимо для вычесления объёма от пуансона до конца матрицы
            model.lowerFilletRadius = radiusAfterLowerFillet;

            if (model.blankRadius > 10)
            {
                model.blankPosition  = model.blankHeight - radiusHeightInStamp;
                model.blankPosition  = Math.Round(model.blankPosition, 1);
                model.blankPosition += 5;
            }
            else
            {
                double tempHeight = model.blankHeight - 60;

                model.blankPosition = tempHeight * ((model.dieRadius - 10) / (model.dieRadius - 10));
                model.blankPosition = Math.Round(model.blankPosition, 1);
                //допуск +2мм на всякий пожарный случай
                model.blankPosition += 2;
            }

            model.stampDisplacement = model.blankPosition;
            //оставляем зазор 1мм
            model.stampDisplacement -= 1;

            #region Создание общей папки с название радиуса заготовки

            genReport.folderName = Convert.ToString(model.blankRadius);

            if (!Directory.Exists(genReport.folderName))
            {
                Directory.CreateDirectory(genReport.folderName);
            }

            #endregion

            string abaqusOutputFolder = Convert.ToString(model.blankRadius)
                                        + "r" + Convert.ToString(model.friction) + "f";

            file.outputFolder = Path.Combine(genReport.folderName, abaqusOutputFolder);

            if (!Directory.Exists(file.outputFolder))
            {
                Directory.CreateDirectory(file.outputFolder);
            }

            #region Пути для солида

            file.caeFolder      = Path.Combine(Environment.CurrentDirectory, file.outputFolder, add.jobName + ".cae");
            file.caeFolder      = file.caeFolder.Replace(@"\", "/");
            file.stampFolder    = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.stampName);
            file.stampFolder    = file.stampFolder.Replace(@"\", "/");
            file.blankFolder    = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.blankName);
            file.blankFolder    = file.blankFolder.Replace(@"\", "/");
            file.platformFolder = Path.Combine(Environment.CurrentDirectory, file.outputFolder, file.platformName);
            file.platformFolder = file.platformFolder.Replace(@"\", "/");

            #endregion

            var solid = new CAD();

            solid.UseSolid(file, model);

            rout.pathIn           = "abaqusMacros.py";
            rout.workingDirectory = file.outputFolder;
            rout.pathOut          = rout.workingDirectory + @"\abaqusMacros.py";

            var change = new Change();

            change.Output(rout, model, material, add, file);

            var abaqus = new CAE();

            abaqus.runAbaqus(rout, cmd);

            var processData = new ProcessData(rout, cmd);

            processData.Processing(model, file, filesForVolume, genReport);

            finalReport.AddData(model);

            genReport.AddFrictionToChart(model);

            genReport.AddRadiusToChart(model);

            #region проверка симплекса

            string fileName = "SimplexNodes";

            var str = new StringBuilder();
            str.Append(kForNodes);
            str.Append(";");
            str.Append(model.blankRadius);
            str.Append(";");
            str.Append(model.friction);
            str.Append(";");
            str.Append(model.pctOfDieFilling);
            str.Append(";");
            str.Append((model.reactionForceToBlank * Math.Pow(10, -6)));
            str.Append(";");
            str.Append(Environment.NewLine);

            var fileCreate = new FileCreation();

            fileCreate.CreateFile("", fileName, ".csv", str.ToString());

            #endregion
        }