Exemple #1
0
        public ReportClass GetDetailReport(OutputInvoiceInfo item,
                                           SerieInfo serie,
                                           ClienteInfo cliente,
                                           TransporterInfo transporter,
                                           FormatConfFacturaAlbaranReport conf)
        {
            if (item == null)
            {
                return(null);
            }

            List <OutputInvoiceLinePrint> conceptos = new List <OutputInvoiceLinePrint>();
            List <OutputInvoicePrint>     pList     = new List <OutputInvoicePrint>();

            foreach (OutputInvoiceLineInfo cfi in item.ConceptoFacturas)
            {
                conceptos.Add(cfi.GetPrintObject());
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (conceptos.Count <= 0)
            {
                return(null);
            }

            pList.Add(OutputInvoicePrint.New(item, cliente, transporter, serie));

            ProductList productos = ProductList.GetList(false);

            foreach (OutputInvoiceLinePrint cfp in conceptos)
            {
                if (cfp.OidProducto == 0)
                {
                    continue;
                }

                ProductInfo prod = productos.GetItem(cfp.OidProducto);
                if (prod != null)
                {
                    continue;
                }

                if (prod.AyudaKilo > 0)
                {
                    cfp.Concepto += " *";
                }
            }

            List <ImpuestoResumen> impuestos = new List <ImpuestoResumen>();

            foreach (DictionaryEntry impuesto in item.GetImpuestos())
            {
                impuestos.Add((ImpuestoResumen)impuesto.Value);
            }

            ReportClass doc = null;

            try
            {
                doc = GetReportFromName("Invoice", "OutputInvoiceRpt");
            }
            catch
            {
                doc = new OutputInvoiceRpt();
            }

            doc.SetDataSource(pList);
            doc.Subreports["ConceptosRpt"].SetDataSource(conceptos);

            if (doc.Subreports["ImpuestoResumenRpt"] != null)
            {
                doc.Subreports["ImpuestoResumenRpt"].SetDataSource(impuestos);
            }

            Library.Common.CompanyInfo empresa = Library.Common.CompanyInfo.Get(Schema.Oid, false);
            doc.SetParameterValue("nombreEmpresa", empresa.Name);
            doc.SetParameterValue("dirEmpresa", empresa.Direccion);
            doc.SetParameterValue("dir2Empresa", empresa.CodPostal + ". " + empresa.Municipio + ". " + empresa.Provincia);
            doc.SetParameterValue("CIFEmpresa", empresa.VatNumber);
            doc.SetParameterValue("TlfEmpresa", empresa.Telefonos);
            doc.SetParameterValue("FaxEmpresa", empresa.Fax);
            doc.SetParameterValue("WebEmpresa", empresa.Url);
            doc.SetParameterValue("nota", conf.nota);
            doc.SetParameterValue("ACuenta", (item.CobroFacturas != null) ? item.CobroFacturas.GetTotal() : 0);
            doc.SetParameterValue("CPEmpresa", empresa.CodPostal);
            doc.SetParameterValue("municipioEmpresa", empresa.Municipio);

            return(doc);
        }
        /// <summary>
        /// FORMATO: 9999999|G|01/10/2009||VENTAS DIA|4300000001|||||||||VENTAS P.S. DEL DIA|D| |37800| |7050000001|00000|00000|00000|4|001| |36000|500| |1800| |0|4777000000|0| | |0|0| |0| |0| | | | |0|0| |0| |0| | | | |0|0| |0| |0| | | | |0|0| |0| |0| | | | |0|0| |0| |0| | | | | | | | | | |1234| | | |0
        /// </summary>
        /// <param name="factura"></param>
        protected override void BuildOutputInvoiceAccountingEntry(OutputInvoiceInfo factura, LineaRegistro lr)
        {
            ClienteInfo titular = _clients.GetItem(factura.OidCliente);

            if (titular.CuentaContable == string.Empty)
            {
                throw new iQException("El cliente nº " + titular.NumeroClienteLabel + " (" + titular.Nombre + ") no tiene cuenta contable asociada");
            }

            string apunte      = string.Empty;
            string descripcion = "Fra. " + factura.NFactura + " (" + factura.Cliente + ")";

            string tipo    = (factura.Rectificativa) ? "H" : "D";
            string signo   = (factura.Rectificativa) ? "-" : "+";
            string importe = factura.Total.ToString().Replace(".", string.Empty);

            //apunte en la cuenta del cliente
            apunte += AddValue(_config.Empresa);                                /*CENTRO DE TRABAJO*/
            apunte += AddValue("S");                                            /*TIPO DE REGISTRO*/
            apunte += AddValue(factura.Fecha.ToShortDateString());              /*FECHA*/
            apunte += AddValue(factura.NumeroSerie);                            /*Nº SERIE DOCUMENTO*/
            apunte += AddValue(factura.NFactura);                               /*DOCUMENTO*/
            apunte += AddValue(titular.CuentaContable);                         /*CUENTA*/
            apunte += AddEmptyValue(8);                                         /*SIN USO*/
            apunte += AddValue(descripcion);                                    /*DESCRIPCION*/
            apunte += AddValue(tipo.ToString());                                /*TIPO: DEBE=1, HABER=2*/
            apunte += AddValue(signo);                                          /*SIGNO*/
            apunte += AddValue(importe);                                        /*IMPORTE*/
            apunte += AddValue(_accounting_entry.ToString());                   /*ASIENTO*/
            apunte += AddEmptyValue(73);                                        /*SIN USO*/
            apunte += AddValue(_config.CentroTrabajo);                          /*CENTRO TRABAJO*/
            apunte += AddEmptyValue(3);                                         /*SIN USO*/

            _export_file.WriteLine(apunte);

            List <CuentaResumen> cuentas = factura.GetCuentas();
            FamiliaInfo          familia;

            foreach (CuentaResumen cr in cuentas)
            {
                apunte = string.Empty;

                familia = _families.GetItem(cr.OidFamilia);

                if (familia == null)
                {
                    throw new iQException("Factura " + factura.NFactura + " con familia a nulo");
                }

                if (cr.CuentaContable == string.Empty)
                {
                    throw new iQException("La familia nº " + familia.Codigo + " (" + familia.Nombre + ") no tiene cuenta contable (venta) asociada");
                }

                tipo    = (factura.Rectificativa) ? "D" : "H";
                signo   = (factura.Rectificativa) ? "+" : "-";
                importe = cr.Importe.ToString().Replace(".", string.Empty);

                //apunte en la cuenta de venta
                apunte += AddValue(_config.Empresa);                                    /*CODIGO DE EMPRESA*/
                apunte += AddValue("G");                                                /*TIPO DE REGISTRO*/
                apunte += AddValue(factura.Fecha.ToShortDateString());                  /*FECHA*/
                apunte += AddValue(factura.NumeroSerie);                                /*Nº SERIE DOCUMENTO*/
                apunte += AddValue(factura.NFactura);                                   /*DOCUMENTO*/
                apunte += AddValue(cr.CuentaContable);                                  /*CUENTA*/
                apunte += AddEmptyValue(8);                                             /*SIN USO*/
                apunte += AddValue(descripcion);                                        /*DESCRIPCION*/
                apunte += AddValue(tipo.ToString());                                    /*TIPO: DEBE=1, HABER=2*/
                apunte += AddValue(signo);                                              /*SIGNO*/
                apunte += AddValue(importe);                                            /*IMPORTE*/
                apunte += AddValue(_accounting_entry.ToString());                       /*ASIENTO*/
                apunte += AddEmptyValue(73);                                            /*SIN USO*/
                apunte += AddValue(_config.CentroTrabajo);                              /*CENTRO TRABAJO*/
                apunte += AddEmptyValue(3);                                             /*SIN USO*/

                _export_file.WriteLine(apunte);
            }

            // Apuntes en las cuentas de Impuestos

            List <ImpuestoResumen> impuestos = new List <ImpuestoResumen>();

            foreach (DictionaryEntry impuesto in factura.GetImpuestos())
            {
                impuestos.Add((ImpuestoResumen)impuesto.Value);
            }

            foreach (ImpuestoResumen ir in impuestos)
            {
                if (ir.Importe == 0)
                {
                    continue;
                }

                apunte = string.Empty;

                ImpuestoInfo impuesto = _taxes.GetItem(ir.OidImpuesto);

                if (impuesto == null)
                {
                    throw new iQException("Factura " + factura.NFactura + " con impuesto a nulo");
                }

                if (impuesto.CuentaContableSoportado == string.Empty)
                {
                    throw new iQException("El impuesto '" + impuesto.Nombre + "' no tiene cuenta contable (repercutido) asociada");
                }

                tipo    = (factura.Rectificativa) ? "D" : "H";
                signo   = (factura.Rectificativa) ? "+" : "-";
                importe = ir.Importe.ToString().Replace(".", string.Empty);

                //apunte en la cuenta del impuesto
                apunte += AddValue(_config.Empresa);                                    /*CODIGO DE EMPRESA*/
                apunte += AddValue("G");                                                /*TIPO DE REGISTRO*/
                apunte += AddValue(factura.Fecha.ToShortDateString());                  /*FECHA*/
                apunte += AddValue(factura.NumeroSerie);                                /*Nº SERIE DOCUMENTO*/
                apunte += AddValue(factura.NFactura);                                   /*DOCUMENTO*/
                apunte += AddValue(impuesto.CuentaContableSoportado);                   /*CUENTA*/
                apunte += AddEmptyValue(8);                                             /*SIN USO*/
                apunte += AddValue(descripcion);                                        /*DESCRIPCION*/
                apunte += AddValue(tipo.ToString());                                    /*TIPO: DEBE=1, HABER=2*/
                apunte += AddValue(signo);                                              /*SIGNO*/
                apunte += AddValue(importe);                                            /*IMPORTE*/
                apunte += AddValue(_accounting_entry.ToString());                       /*ASIENTO*/
                apunte += AddEmptyValue(73);                                            /*SIN USO*/
                apunte += AddValue(_config.CentroTrabajo);                              /*CENTRO TRABAJO*/
                apunte += AddEmptyValue(3);                                             /*SIN USO*/

                _export_file.WriteLine(apunte);
            }
        }