Пример #1
0
        private void ProcesarComprobante(out CrystalDecisions.CrystalReports.Engine.ReportDocument ReporteDocumento, eFact_Entidades.Lote Lote, int Renglon)
        {
            try
            {
                Cursor = System.Windows.Forms.Cursors.WaitCursor;
                facturaRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
                facturaRpt.Load("Facturacion\\Electronica\\Reportes\\Factura.rpt");

                //Crear un lote de un solo comprobante, para la impresion o exportacion del pdf.
                eFact_Entidades.Lote LoteConUnSoloComprobante = new eFact_Entidades.Lote();
                LoteConUnSoloComprobante.CuitVendedor = Lote.CuitVendedor;
                LoteConUnSoloComprobante.FechaAlta = Lote.FechaAlta;
                LoteConUnSoloComprobante.FechaEnvio = Lote.FechaEnvio;
                LoteConUnSoloComprobante.IdLote = Lote.IdLote;
                LoteConUnSoloComprobante.IdOp = Lote.IdOp;
                LoteConUnSoloComprobante.LoteXml = Lote.LoteXml;
                LoteConUnSoloComprobante.LoteXmlIF = Lote.LoteXmlIF;
                LoteConUnSoloComprobante.NumeroEnvio = Lote.NumeroEnvio;
                LoteConUnSoloComprobante.NumeroLote = Lote.NumeroLote;
                LoteConUnSoloComprobante.PuntoVenta = Lote.PuntoVenta;
                LoteConUnSoloComprobante.CantidadRegistros = 1;
                LoteConUnSoloComprobante.Comprobantes.Add(Lote.Comprobantes[Renglon]);
                LoteConUnSoloComprobante.WF = Lote.WF;
                FeaEntidades.InterFacturas.lote_comprobantes lc = new FeaEntidades.InterFacturas.lote_comprobantes();
                eFact_RN.Lote.DeserializarLc(out lc, LoteConUnSoloComprobante, true);
                //Entidad para reporte crystal. Al desserializar se pierden los descuentos de la entidad original.
                FeaEntidades.Reporte.lote_comprobantes lcReporte = new FeaEntidades.Reporte.lote_comprobantes();
                eFact_RN.Lote.DeserializarLc(out lcReporte, LoteConUnSoloComprobante);
                for (int i = 0; i < lc.comprobante.Length; i++)
                {
                    if (i == 0)
                    {
                        lc.comprobante[i] = lc.comprobante[Renglon];
                        lcReporte.comprobante[i] = lcReporte.comprobante[Renglon];
                        for (int l = 0; l < lc.comprobante[i].detalle.linea.Length; l++)
                        {
                            if (lc.comprobante[i].detalle.linea[l].lineaDescuentos != null)
                            {
                                lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos = new FeaEntidades.Reporte.lineaDescuentos[lc.comprobante[i].detalle.linea[l].lineaDescuentos.Length];
                                for (int d = 0; d < lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos.Length; d++)
                                {
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d] = new FeaEntidades.Reporte.lineaDescuentos();
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].descripcion_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].descripcion_descuento;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origen = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origen;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].importe_descuento_moneda_origenSpecified = true;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuento = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuento;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified = lc.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified;
                                    lcReporte.comprobante[i].detalle.linea[l].lineaDescuentos[d].porcentaje_descuentoSpecified = true;
                                }
                            }
                            else
                            {
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos = new FeaEntidades.Reporte.lineaDescuentos[1];
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0] = new FeaEntidades.Reporte.lineaDescuentos();
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].descripcion_descuento = "";
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento = 0;
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].porcentaje_descuento = 0;
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].porcentaje_descuentoSpecified = true;
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento_moneda_origen = 0;
                                lcReporte.comprobante[0].detalle.linea[l].lineaDescuentos[0].importe_descuento_moneda_origenSpecified = true;
                            }
                        }
                    }
                    else
                    {
                        lc.comprobante[i] = null;
                        lcReporte.comprobante[i] = null;
                    }
                }
                
                AsignarCamposOpcionales(lcReporte);
                ReemplarResumenImportesMonedaExtranjera(lcReporte);
                DataSet ds = new DataSet();
                XmlSerializer objXS = new XmlSerializer(lcReporte.GetType());
                StringWriter objSW = new StringWriter();
                objXS.Serialize(objSW, lcReporte);
                StringReader objSR = new StringReader(objSW.ToString());
                ds.ReadXml(objSR);
                
                string pxsd = string.Format("{0}\\Facturacion\\Electronica\\Reportes\\lote_comprobantes.xsd",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
                System.IO.File.Copy(pxsd, @System.IO.Path.GetTempPath() + "lote_comprobantes.xsd", true);
                
                string imagen = string.Format("{0}\\Facturacion\\Electronica\\Reportes\\Imagen.xsd",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
                System.IO.File.Copy(imagen, @System.IO.Path.GetTempPath() + "Imagen.xsd", true);

                facturaRpt.SetDataSource(ds);

                facturaRpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter;
                facturaRpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait;

                IncrustarLogo();
                GenerarCodigoBarras(lcReporte.cabecera_lote.cuit_vendedor + lcReporte.comprobante[0].cabecera.informacion_comprobante.tipo_de_comprobante.ToString("00") + lcReporte.comprobante[0].cabecera.informacion_comprobante.punto_de_venta.ToString("0000") + lcReporte.comprobante[0].cabecera.informacion_comprobante.cae + lcReporte.comprobante[0].cabecera.informacion_comprobante.fecha_vencimiento_cae);
                AsignarParametros(lcReporte.comprobante[0].resumen.importe_total_factura);

                ReporteDocumento = facturaRpt;
            }
            catch (Exception ex)
            {
                ReporteDocumento = null;
                //MessageBox.Show(ex.Message, "Problemas al procesar el comprobante", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                throw new Microsoft.ApplicationBlocks.ExceptionManagement.Reporte.ProblemasProcesando(ex);
            }
            finally
            {
                Cursor = System.Windows.Forms.Cursors.Default;
            }
        }
Пример #2
0
 public static void DeserializarLc(out FeaEntidades.Reporte.lote_comprobantes Lc, eFact_Entidades.Lote Lote)
 {
     string cadena = Cadena(Lote, true);
     //Deserializar ( pasar de string XML a FeaEntidades.Reporte.lote_comprobantes )
     System.Text.Encoding codificador;
     codificador = System.Text.Encoding.GetEncoding("iso-8859-1");
     byte[] a = new byte[cadena.Length];
     a = codificador.GetBytes(cadena);
     MemoryStream ms = new MemoryStream(a);
     ms.Seek(0, System.IO.SeekOrigin.Begin);
     FeaEntidades.Reporte.lote_comprobantes lc = new FeaEntidades.Reporte.lote_comprobantes();
     System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(lc.GetType());
     lc = (FeaEntidades.Reporte.lote_comprobantes)x.Deserialize(ms);
     ms.Close();
     ms = null;
     Lc = lc;
 }