Ejemplo n.º 1
0
 public void LeerMinutas(Entidades.Comprobante Comprobante)
 {
     System.Text.StringBuilder a = new StringBuilder();
     a.Append("select ComprobanteDetalle.IdWF, ComprobanteDetalle.IdTipoItem, ComprobanteDetalle.NroItem, ComprobanteDetalle.IdArticulo, ComprobanteDetalle.IdRubro, ComprobanteDetalle.Cantidad, ComprobanteDetalle.PrecioUnitario, ComprobanteDetalle.Importe, ComprobanteDetalle.IdUbicacion, ComprobanteDetalle.IndicadorExentoGravado, ComprobanteDetalle.Detalle, Rubro.DescrRubro from ComprobanteDetalle, Rubro where IdWF=" + Comprobante.WF.Id.ToString() + " and ComprobanteDetalle.IdRubro=Rubro.IdRubro ");
     DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
     if (dt.Rows.Count != 0)
     {
         Comprobante.Minutas.Clear();
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             Entidades.ComprobanteDetalle minuta = new Entidades.ComprobanteDetalle();
             minuta.Item.IdTipo = Convert.ToString(dt.Rows[i]["IdTipoItem"]);
             minuta.Item.Nro = Convert.ToInt32(dt.Rows[i]["NroItem"]);
             minuta.Articulo.Id = Convert.ToString(dt.Rows[i]["IdArticulo"]);
             minuta.Rubro.Id = Convert.ToString(dt.Rows[i]["IdRubro"]);
             minuta.Cantidad = Convert.ToDouble(dt.Rows[i]["Cantidad"]);
             minuta.PrecioUnitario = Convert.ToDouble(dt.Rows[i]["PrecioUnitario"]);
             minuta.Importe = Convert.ToDouble(dt.Rows[i]["Importe"]);
             minuta.IdUbicacion = Convert.ToString(dt.Rows[i]["IdUbicacion"]);
             minuta.IndicadorExentoGravado = Convert.ToString(dt.Rows[i]["IndicadorExentoGravado"]);
             minuta.Detalle = Convert.ToString(dt.Rows[i]["Detalle"]);
             minuta.Rubro.Descr = Convert.ToString(dt.Rows[i]["DescrRubro"]);
             Comprobante.Minutas.Add(minuta);
         }
     }
 }
Ejemplo n.º 2
0
        public static void Registrar(FeaEntidades.InterFacturas.lote_comprobantes Lote, Object Response, string IdNaturalezaComprobante, string IdDestinoComprobante, string IdEstado, string PeriodicidadEmision, DateTime FechaProximaEmision, int CantidadComprobantesAEmitir, int CantidadComprobantesEmitidos, int CantidadDiasFechaVto, string Detalle, bool EmailAvisoComprobanteActivo, string IdDestinatarioFrecuente, string EmailAvisoComprobanteAsunto, string EmailAvisoComprobanteCuerpo, Entidades.Sesion Sesion)
        {
            //Generar Comprobante a partir de Lote
            Entidades.Comprobante comprobante = new Entidades.Comprobante();
            if (IdNaturalezaComprobante != "Compra")
            {
                comprobante.Cuit = Lote.cabecera_lote.cuit_vendedor.ToString();
                comprobante.Documento.Tipo.Id = Lote.comprobante[0].cabecera.informacion_comprador.codigo_doc_identificatorio.ToString();
                FeaEntidades.Documentos.Documento tipoDocumento = FeaEntidades.Documentos.Documento.Lista().Find(delegate(FeaEntidades.Documentos.Documento d) { return comprobante.Documento.Tipo.Id == d.Codigo.ToString(); });
                if (tipoDocumento != null)
                {
                    comprobante.Documento.Tipo.Descr = tipoDocumento.Descr;
                }
                else
                {
                    comprobante.Documento.Tipo.Descr = "Desconocido";
                }
                comprobante.Documento.Nro = Lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio;
                comprobante.IdPersona = Lote.comprobante[0].cabecera.informacion_comprador.id;
                comprobante.DesambiguacionCuitPais = Lote.comprobante[0].cabecera.informacion_comprador.desambiguacionCuitPais;
                comprobante.RazonSocial = Lote.comprobante[0].cabecera.informacion_comprador.denominacion;
            }
            else
            {
                comprobante.Cuit = Lote.comprobante[0].cabecera.informacion_comprador.nro_doc_identificatorio.ToString();
                comprobante.Documento.Tipo.Id = new FeaEntidades.Documentos.CUIT().Codigo.ToString();
                comprobante.Documento.Nro = Lote.cabecera_lote.cuit_vendedor;
                comprobante.IdPersona = Lote.comprobante[0].cabecera.informacion_vendedor.id;
                comprobante.DesambiguacionCuitPais = Lote.comprobante[0].cabecera.informacion_vendedor.desambiguacionCuitPais;
                comprobante.RazonSocial = Lote.comprobante[0].cabecera.informacion_vendedor.razon_social;
            }
            comprobante.WF.Estado = IdEstado;
            comprobante.TipoComprobante.Id = Lote.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante;
            FeaEntidades.TiposDeComprobantes.TipoComprobante tipoComprobante;
            if (IdNaturalezaComprobante != "Compra")
            {
                tipoComprobante = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIP().Find(delegate(FeaEntidades.TiposDeComprobantes.TipoComprobante d) { return comprobante.TipoComprobante.Id.ToString() == d.Codigo.ToString(); });
            }
            else
            {
                tipoComprobante = FeaEntidades.TiposDeComprobantes.TipoComprobante.ListaCompletaAFIPCompras().Find(delegate(FeaEntidades.TiposDeComprobantes.TipoComprobante d) { return comprobante.TipoComprobante.Id.ToString() == d.Codigo.ToString(); });
            }
            if (tipoComprobante != null)
            {
                comprobante.TipoComprobante.Descr = tipoComprobante.Descr;
            }
            else
            {
                comprobante.TipoComprobante.Descr = "Desconocido";
            }
            comprobante.NroPuntoVta = Lote.comprobante[0].cabecera.informacion_comprobante.punto_de_venta;
            comprobante.Nro = Lote.comprobante[0].cabecera.informacion_comprobante.numero_comprobante;
            comprobante.NroLote = Lote.cabecera_lote.id_lote;
            comprobante.Detalle = Detalle;
            comprobante.Fecha = DB.Funciones.ConvertirFechaStringAAAAMMDDaDatetime(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_emision);
            if (Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento == null || Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento == String.Empty)
            {
                comprobante.FechaVto = Convert.ToDateTime("31/12/9999");
            }
            else
            {
                comprobante.FechaVto = DB.Funciones.ConvertirFechaStringAAAAMMDDaDatetime(Lote.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento);
            }
            comprobante.Moneda = Lote.comprobante[0].resumen.codigo_moneda;
            if (Lote.comprobante[0].resumen.importes_moneda_origen != null)
            {
                comprobante.ImporteMoneda = Lote.comprobante[0].resumen.importes_moneda_origen.importe_total_factura;
            }
            comprobante.TipoCambio = Lote.comprobante[0].resumen.tipo_de_cambio;
            comprobante.Importe = Lote.comprobante[0].resumen.importe_total_factura;
            comprobante.Request = DB.Funciones.ObjetoSerializado(Lote);
            if (Response != null)
            {
                comprobante.Response = DB.Funciones.ObjetoSerializado(Response);
            }
            comprobante.IdDestinoComprobante = IdDestinoComprobante;
            comprobante.NaturalezaComprobante.Id = IdNaturalezaComprobante;
            comprobante.PeriodicidadEmision = PeriodicidadEmision;
            comprobante.FechaProximaEmision = FechaProximaEmision;
            comprobante.CantidadComprobantesAEmitir = CantidadComprobantesAEmitir;
            comprobante.CantidadComprobantesEmitidos = CantidadComprobantesEmitidos;
            comprobante.CantidadDiasFechaVto = CantidadDiasFechaVto;
            comprobante.DatosEmailAvisoComprobanteContrato.Activo = EmailAvisoComprobanteActivo;
            comprobante.DatosEmailAvisoComprobanteContrato.DestinatarioFrecuente.Id = IdDestinatarioFrecuente;
            comprobante.DatosEmailAvisoComprobanteContrato.Asunto = EmailAvisoComprobanteAsunto;
            comprobante.DatosEmailAvisoComprobanteContrato.Cuerpo = EmailAvisoComprobanteCuerpo;

            #region ARMADO DE MINUTAS DE STOCK Y CONTABILIDAD
            Entidades.EsquemaContable esquemaContable;
            Entidades.ComprobanteDetalle minuta;
            //Total
            esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "T");
            RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
            minuta = new Entidades.ComprobanteDetalle();
            minuta.Item.IdTipo = esquemaContable.Concepto;
            minuta.Item.Nro = 0;
            minuta.Articulo.Id = string.Empty;
            minuta.Rubro.Id = esquemaContable.Rubro.Id;
            minuta.Cantidad = 0;
            minuta.PrecioUnitario = 0;
            minuta.Importe = comprobante.Importe * esquemaContable.Signo;
            minuta.IdUbicacion = string.Empty;
            minuta.IndicadorExentoGravado = string.Empty;
            comprobante.Minutas.Add(minuta);
            //Articulos
            for (int i = 0; i < Lote.comprobante[0].detalle.linea.Length; i++)
            {
                if (Lote.comprobante[0].detalle.linea[i] != null)
                {
                    esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "A");
                    RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                    minuta = new Entidades.ComprobanteDetalle();
                    minuta.Item.IdTipo = esquemaContable.Concepto;
                    minuta.Item.Nro = i;
                    if (Lote.comprobante[0].detalle.linea[i].codigo_producto_vendedor != string.Empty)
                    {
                        minuta.Articulo.Id = Lote.comprobante[0].detalle.linea[i].codigo_producto_vendedor;
                        minuta.Detalle = string.Empty;
                    }
                    else
                    {
                        minuta.Articulo.Id = string.Empty;
                        minuta.Detalle = RN.Funciones.HexToString(Lote.comprobante[0].detalle.linea[i].descripcion);
                    }
                    minuta.Rubro.Id = esquemaContable.Rubro.Id;
                    if (Lote.comprobante[0].detalle.linea[i].cantidadSpecified)
                        minuta.Cantidad = Lote.comprobante[0].detalle.linea[i].cantidad * esquemaContable.Signo;
                    else
                        minuta.Cantidad = 0;
                    if (Lote.comprobante[0].detalle.linea[i].precio_unitarioSpecified)
                        minuta.PrecioUnitario = Lote.comprobante[0].detalle.linea[i].precio_unitario;
                    else
                        minuta.PrecioUnitario = 0;
                    minuta.Importe = Lote.comprobante[0].detalle.linea[i].importe_total_articulo * esquemaContable.Signo;
                    minuta.IdUbicacion = string.Empty;
                    minuta.IndicadorExentoGravado = Lote.comprobante[0].detalle.linea[i].indicacion_exento_gravado;
                    comprobante.Minutas.Add(minuta);
                }
            }
            //Descuentos
            if (Lote.comprobante[0].resumen.descuentos != null)
            {
                for (int i = 0; i < Lote.comprobante[0].resumen.descuentos.Length; i++)
                {
                    if (Lote.comprobante[0].resumen.descuentos[i] != null)
                    {
                        esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, "D");
                        RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                        minuta = new Entidades.ComprobanteDetalle();
                        minuta.Item.IdTipo = esquemaContable.Concepto;
                        minuta.Item.Nro = i;
                        minuta.Articulo.Id = string.Empty;
                        minuta.Rubro.Id = esquemaContable.Rubro.Id;
                        minuta.Cantidad = 0;
                        minuta.PrecioUnitario = 0;
                        minuta.Importe = Lote.comprobante[0].resumen.descuentos[i].importe_descuento * esquemaContable.Signo;
                        minuta.IdUbicacion = string.Empty;
                        minuta.IndicadorExentoGravado = Lote.comprobante[0].resumen.descuentos[i].indicacion_exento_gravado_descuento;
                        minuta.Detalle = "Desc." + Lote.comprobante[0].resumen.descuentos[i].descripcion_descuento.ToLower();
                        if (Lote.comprobante[0].resumen.descuentos[i].porcentaje_descuentoSpecified)
                            minuta.Detalle += " " + Lote.comprobante[0].resumen.descuentos[i].porcentaje_descuento.ToString() + "%";
                        comprobante.Minutas.Add(minuta);
                    }
                }
            }
            //Impuestos
            if (Lote.comprobante[0].resumen.impuestos != null)
            {
                for (int i = 0; i < Lote.comprobante[0].resumen.impuestos.Length; i++)
                {
                    if (Lote.comprobante[0].resumen.impuestos[i] != null)
                    {
                        string concepto = "I-" + Lote.comprobante[0].resumen.impuestos[i].codigo_impuesto;
                        if (Lote.comprobante[0].resumen.impuestos[i].porcentaje_impuestoSpecified && Lote.comprobante[0].resumen.impuestos[i].codigo_impuesto == 1)
                            concepto += "-" + Lote.comprobante[0].resumen.impuestos[i].porcentaje_impuesto;
                        esquemaContable = new Entidades.EsquemaContable(comprobante.TipoComprobante, comprobante.NaturalezaComprobante, concepto);
                        RN.Rubro.LeerEsquemaContable(esquemaContable, Sesion);
                        minuta = new Entidades.ComprobanteDetalle();
                        minuta.Item.IdTipo = "I";
                        minuta.Item.Nro = i;
                        minuta.Articulo.Id = string.Empty;
                        minuta.Rubro.Id = esquemaContable.Rubro.Id;
                        minuta.Cantidad = 0;
                        minuta.PrecioUnitario = 0;
                        minuta.Importe = Lote.comprobante[0].resumen.impuestos[i].importe_impuesto * esquemaContable.Signo;
                        minuta.IdUbicacion = string.Empty;
                        minuta.IndicadorExentoGravado = string.Empty;
                        minuta.Detalle = string.Empty;
                        comprobante.Minutas.Add(minuta);
                    }
                }
            }
            #endregion
            DB.Comprobante db = new DB.Comprobante(Sesion);
            db.Registrar(comprobante);
        }