Comunidad de diseño web y desarrollo en internet online

Problemas al imprimir con la clase FlexPrintJob

Citar            
MensajeEscrito el 01 Nov 2010 06:11 am
Hola como estan, les cuento mi problema, estoy tratando de imprimir con la clase FlexPrintJob, bueno, de esta forma imprimo, creo dinamicamente mis PrintDatagrig y los voy agregando a un Vbox que es mi vista o layout, una vez que se llena el Vbox(tamaño carta) se manda a la clase FlexPrintJob con el metodo addObject, y así susesivamente, se me olvidaba mecionar que los datos para llenar los PintDatgrid los saco de la base de datos y los meto a un ArrayCollection, luego de este ArrayCollection voy llenando mis printdagrid.

El problema es que por algun motivo que desconosco mis PrintDatagrid no se llenan por comleto (no todos) faltan arrays (filas) en PrintDatagrid, lo cual es raro ya que siempre antes de utilizar addObject, creo dinamicamente mi Printdatagrid y al dataprovider de dicho printDataGrid le traspaso lo que hay en Arraycollecion.

Pd:
Antes de agregar el PirntDatagrid los vuelvo a instanciar como nuevo objeto para que no sobreescriva o remplaze el ultimo printdagrid agregado con el metodo addchild de la clase vista o layout creado por mi.

El código...

Código ActionScript :

      public function libroVentas(event:ResultEvent):void 
         {
            if(http.lastResult.toString()=="vacio")
            {
               cursorManager.removeBusyCursor();
               Alert.show("Por el momento no se puede generar el reporte ya que no se encontraron Ventas.", "Mensaje");
               return;
            }
            
            var result:Object=event.result;
         if(result.ventas.venta is ObjectProxy) 
            dataProvider=new ArrayCollection([{
               fecha: result.ventas.venta.fecha,
               folio: result.ventas.venta.folio,
               rut: result.ventas.venta.rut,
               razon_social: result.ventas.venta.razon_social,
               neto: result.ventas.venta.neto,
               iva: result.ventas.venta.iva,
               total: result.ventas.venta.total,
               netoNota: result.ventas.venta.netoNota,
               ivaNota: result.ventas.venta.ivaNota,
               totalNota: result.ventas.venta.totalNota
               }]);
         else
            dataProvider=http.lastResult.ventas.venta;
               
            var printJob:FlexPrintJob = new FlexPrintJob();
            if(printJob.start())
            {
                  var thePrintView:layoutLibroVentas=new layoutLibroVentas();
                 Application.application.addChild(thePrintView);

                thePrintView.width=printJob.pageWidth;
                thePrintView.height=printJob.pageHeight;
            
            var inicioTemp:Number=0;
            var cont:Number=0;
            var cont2:Number=0;
                var dataTemp:Object=new Object();
                dataTemp[cont]=new ArrayCollection();
                 
                for(var i:Number=0; i<dataProvider.length; i++)
                {
                   cont2++;
                   var neto:Number=0;
                    var iva:Number=0;
                    var total:Number=0;          
                      var netoNota:Number=0;
                      var ivaNota:Number=0;
                      var totalNota:Number=0;
                      var j:Number;
                       
                   var vars:Object=new Object();
                   vars.fecha=dataProvider.getItemAt(i).fecha;
                   vars.folio=dataProvider.getItemAt(i).folio;
                   vars.tipo_documento=dataProvider.getItemAt(i).tipo_documento;
                   vars.rut=dataProvider.getItemAt(i).rut;
                   vars.razon_social=dataProvider.getItemAt(i).razon_social;
                   vars.neto=dataProvider.getItemAt(i).neto;
                   vars.iva=dataProvider.getItemAt(i).iva;
                   vars.total=dataProvider.getItemAt(i).total;
                    dataTemp[cont].addItem(vars);
                    
                    if(cont2==18)
                    {
                       crearDataGrid(dataTemp[cont], thePrintView, "principal");
                       printJob.addObject(thePrintView);
                       thePrintView.removeAllChildren();
                       cont++;
                       cont2=0;
                       dataTemp[cont]=new ArrayCollection();
                    }
                    else if(i<dataProvider.length-1)
                    {
                       if(dataProvider.getItemAt(i).fecha!=dataProvider.getItemAt(i+1).fecha) 
                       {
                               
                          for(j=inicioTemp; j<=i; j++)
                          {
                             neto+=Number(dataProvider.getItemAt(j).neto.toString().replace(",", ""));
                             iva+=Number(dataProvider.getItemAt(j).iva.toString().replace(",", ""));
                             total+=Number(dataProvider.getItemAt(j).total.toString().replace(",", ""));
                             
                             netoNota+=Number(dataProvider.getItemAt(j).netoNota.toString().replace(",", ""));
                             ivaNota+=Number(dataProvider.getItemAt(j).ivaNota.toString().replace(",", ""));
                             totalNota+=Number(dataProvider.getItemAt(j).totalNota.toString().replace(",", ""));
                          }
                          
                          crearDataGrid(dataTemp[cont], thePrintView, "principal");
                          crearDataGrid(new ArrayCollection([{
                             titulo: "Total Facturas y Boletas:",
                             neto: myFormatter.format(neto),
                             iva: myFormatter.format(iva),
                             total: myFormatter.format(total)
                          },
                          {
                             titulo: "Total Notas Créditos:",
                             neto: myFormatter.format(netoNota),
                             iva: myFormatter.format(ivaNota),
                             total: myFormatter.format(totalNota)
                          },
                          {
                             titulo: "Total del Día:",
                             neto: myFormatter.format(neto+netoNota),
                             iva: myFormatter.format(iva+ivaNota),
                             total: myFormatter.format(total+totalNota)
                          }
                          ]), thePrintView, "secundario");
                          cont++;
                          cont2+=3;
                          inicioTemp=i+1;
                          dataTemp[cont]=new ArrayCollection();
                       }
                    }
                    else if(i==dataProvider.length-1)
                    {   
                       for(j=inicioTemp; j<=i; j++)
                       {
                          neto+=Number(dataProvider.getItemAt(j).neto.toString().replace(",", ""));
                          iva+=Number(dataProvider.getItemAt(j).iva.toString().replace(",", ""));
                          total+=Number(dataProvider.getItemAt(j).total.toString().replace(",", ""));
                             
                          netoNota+=Number(dataProvider.getItemAt(j).netoNota.toString().replace(",", ""));
                          ivaNota+=Number(dataProvider.getItemAt(j).ivaNota.toString().replace(",", ""));
                          totalNota+=Number(dataProvider.getItemAt(j).totalNota.toString().replace(",", ""));
                       }
                          
                       crearDataGrid(dataTemp[cont], thePrintView, "principal");
                       crearDataGrid(new ArrayCollection([{
                             titulo: "Total Facturas y Boletas:",
                             neto: myFormatter.format(neto),
                             iva: myFormatter.format(iva),
                             total: myFormatter.format(total)
                          },
                          {
                             titulo: "Total Notas Créditos:",
                             neto: myFormatter.format(netoNota),
                             iva: myFormatter.format(ivaNota),
                             total: myFormatter.format(totalNota)
                          },
                          {
                             titulo: "Total del Día:",
                             neto: myFormatter.format(neto+netoNota),
                             iva: myFormatter.format(iva+ivaNota),
                             total: myFormatter.format(total+totalNota)
                          }
                       ]), thePrintView, "secundario");
                       
                       printJob.addObject(thePrintView);
                    }
                }
                
                Application.application.removeChild(thePrintView);
               printJob.send();
            }
                  
            cursorManager.removeBusyCursor();
        }
        
        public function crearDataGrid(data:ArrayCollection, view:VBox, tipo:String):void
      {
         var PrintData:PrintDataGrid
         var PrintColum:DataGridColumn;
         var columnas:Array;
      
         if(tipo=="secundario")
         {
            PrintData=new PrintDataGrid();
            PrintData.width=390;
            PrintData.setStyle("height", "100%");
            PrintData.showHeaders=false;
            columnas=PrintData.columns;
            
            PrintColum=new DataGridColumn();
            PrintColum.dataField="titulo";
            PrintColum.width=200;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
            
            PrintColum=new DataGridColumn();
            PrintColum.dataField="neto";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
            
            PrintColum=new DataGridColumn();
            PrintColum.dataField="iva";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
            
            PrintColum=new DataGridColumn();
            PrintColum.dataField="total";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
            
            PrintData.columns=columnas;
            PrintData.dataProvider=data;
            view.addChild(PrintData);
         }
         else if(tipo=="principal")
         {
            PrintData=new PrintDataGrid();
            PrintData.width=726;
            PrintData.setStyle("height", "100%");
                  
            columnas=PrintData.columns;
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Fecha";
            PrintColum.dataField="fecha";
            PrintColum.width=90;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Nª Documento";
            PrintColum.dataField="folio";
            PrintColum.width=100;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Tipo Documento";
            PrintColum.dataField="tipo_documento";
            PrintColum.width=100;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Rut";
            PrintColum.dataField="rut";
            PrintColum.width=90;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Cliente";
            PrintColum.dataField="razon_social";
            PrintColum.width=200;
            PrintColum.setStyle("fontSize", 9);
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Neto";
            PrintColum.dataField="neto";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Iva";
            PrintColum.dataField="iva";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
                  
            PrintColum=new DataGridColumn();
            PrintColum.headerText="Total";
            PrintColum.dataField="total";
            PrintColum.width=80;
            PrintColum.setStyle("fontSize", 9);
            PrintColum.setStyle("textAlign", "right");
            columnas.push(PrintColum);
               
            PrintData.columns=columnas;
            PrintData.dataProvider=data;
            view.addChild(PrintData);
         } 
      }


Aclaración:
En el objeto dataTemp[] voy guardado mis distintos arrayCollection, ya que al asignar un arraycollecion al dataprovider del printdatagrid, el printdatagrid mantiene una referencia hacia el arrayCollection original, esto quiere decir que si modifico el arrayCollection original se modifican los dataprovider de todos mis PrintDataGrid, en conclusión cada PrintDataGrid tiene como dataProvider su propio arraycollecion.

Verifico cada Arracollection de mi dataTemp[] y no falta ningun array, pero al imprimir si desparecen algunas arrays, generarlmete los ultimos arrays de cada arraycollection, demasiado raro.

Utilizo esta forma para imprimir ya que el formato como se logra apreciar es un poco complicado, es un libro de venta en contabilidad, de hecho me falta agregar el total acumulado del mes :?

Desde ya muchas gracias... help help debe un pequeño error :wink:

Por geminis19

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Nov 2010 06:21 pm
Alguna ayuda.... :(

Por geminis19

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Nov 2010 06:28 pm
¿275 líneas de código y otras tantas de explicación? Quizás te faltó sintesis

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.