예제 #1
0
        private static factura procesaHoja(Worksheet sheet)
        {
            int     fila = 0;
            factura o    = new factura();
            object  dato = null;

            #region Datos Generales
            dato = sheet.get_Range("G12", "G12").Value2;
            if (dato != null)
            {
                o.Referencia       = dato.ToString();
                o.PEntInv          = EntradaCtrl.InventarioGetCtaContable(o.Referencia);
                _maxColCuentasCont = o.PEntInv.PLstCteMercCta.Count > _maxColCuentasCont ? o.PEntInv.PLstCteMercCta.Count : _maxColCuentasCont;
            }
            #endregion

            #region Maniobra entrada y salida
            for (fila = 17; fila <= 19; fila++)
            {
                dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
                if (dato != null)
                {
                    o.CapacidadFlete                = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString();
                    o.ManiobraEntradaSalida         = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2);
                    o.ManiobraEntradaSalidaCantidad = Convert.ToInt32(dato);
                    o.ManiobraEntradaSalidaTotal    = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2);
                    break;
                }
            }
            #endregion

            #region Etiquetas aduana
            dato = sheet.get_Range("E23", "E23").Value2;
            if (dato != null)
            {
                o.Piezas19x10         = Convert.ToInt32(dato);
                o.EtiquetaAduana19x10 = Convert.ToDouble(sheet.get_Range("D23", "D23").Value2);
            }
            dato = sheet.get_Range("E27", "E27").Value2;
            if (dato != null)
            {
                o.Piezas10x10         = Convert.ToInt32(dato);
                o.EtiquetaAduana10x10 = Convert.ToDouble(sheet.get_Range("D27", "D27").Value2);
            }
            #endregion

            #region Transportes
            //Busca el inicio de la fila que contiene la información del transporte (TRANSPORTES)
            fila = 30;
            fila = getFila(fila, "B", "TRANSPORTES", sheet);
            dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2;
            string tipo = string.Empty;
            //Los transportes y maniobras se van a diferenciar por la columna que le antecede T transprote, M maniobra
            object cantidad;
            while (dato != null)
            {
                tipo     = sheet.get_Range("A" + fila.ToString(), "A" + fila.ToString()).Value2;
                cantidad = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
                switch (tipo)
                {
                case "T":
                    Transporte t = new Transporte(
                        Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2),
                        Convert.ToInt32(cantidad),
                        Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2.ToString()));
                    o.LstTransporte.Add(t);
                    break;

                case "M":
                    Maniobra m = new Maniobra(
                        Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2),
                        Convert.ToInt32(cantidad),
                        Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2.ToString()));
                    o.LstManiobra.Add(m);
                    break;

                default:
                    break;
                }
                fila++;
                dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2;
            }

            //bool esTransporte = !dato.ToString().StartsWith("Maniobra");
            //while (esTransporte)
            //{
            //    dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
            //    if (dato != null)
            //    {
            //        Transporte t = new Transporte(
            //            Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2),
            //            Convert.ToInt32(dato),
            //            getTarifaTransporte(sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString())
            //            );
            //        o.LstTransporte.Add(t);
            //    }

            //    fila++;
            //    dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2;
            //    esTransporte = !dato.ToString().StartsWith("Maniobra");
            //}
            _maxColTransportes = o.LstTransporte.Count > _maxColTransportes ? o.LstTransporte.Count : _maxColTransportes;
            #endregion

            #region Maniobras
            //bool esManiobra = dato.ToString().StartsWith("Maniobra");
            //while (esManiobra)
            //{
            //    dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
            //    if (dato != null)
            //    {
            //        Maniobra m = new Maniobra(
            //        Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2),
            //            Convert.ToInt32(dato),
            //            getTarifaManiobra(sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString())
            //        );
            //        o.LstManiobra.Add(m);
            //    }

            //    fila++;
            //    dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2;
            //    if (dato != null)
            //        esManiobra = dato.ToString().StartsWith("Maniobra");
            //    else
            //        esManiobra = false;
            //}
            _maxColManiobras = o.LstManiobra.Count > _maxColManiobras ? o.LstManiobra.Count : _maxColManiobras;

            #endregion

            #region Otros (Parte 1)
            dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2;
            if (dato == null)
            {
                dato = string.Empty;
            }
            while (!dato.ToString().StartsWith("SUBTOTAL"))
            {
                dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
                if (dato != null)
                {
                    OtrosServicios os = new OtrosServicios();
                    os.Cantidad = Convert.ToInt32(dato);
                    os.Valor    = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2);
                    os.Nombre   = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString();
                    o.LstOtros.Add(os);
                }
                fila++;
                dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2;
                if (dato == null)
                {
                    dato = string.Empty;
                }
            }
            #endregion

            #region Tarimas y Emplayado
            fila = getFila(fila, "B", "OTROS", sheet);
            dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
            if (dato != null)
            {
                o.PTarima.Cantidad = Convert.ToInt32(dato);
                o.PTarima.Valor    = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2);
            }
            fila++;
            dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
            if (dato != null)
            {
                o.PEmplayado.Cantidad = Convert.ToInt32(dato);
                o.PEmplayado.Valor    = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2);
            }
            #endregion

            #region #region Otros (Parte 2)
            fila = getFila(fila, "B", "UVA", sheet);
            dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2;
            while (!dato.ToString().StartsWith("SUBTOTAL"))
            {
                dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2;
                if (dato != null)
                {
                    OtrosServicios os = new OtrosServicios();
                    os.Cantidad = Convert.ToInt32(dato);
                    os.Valor    = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2);
                    os.Nombre   = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString();
                    o.LstOtros.Add(os);
                }
                fila++;
                dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2;
            }

            #endregion

            #region Total

            fila = getFila(fila, "G", "GRAN TOTAL", sheet);
            fila--; //El método get fila incrementa en una unidad
            dato = sheet.get_Range("I" + fila.ToString(), "I" + fila.ToString()).Value2;
            if (dato != null)
            {
                o.Total = Convert.ToDouble(dato);
            }

            #endregion

            return(o);
        }
예제 #2
0
        private static void insertaFila(Worksheet sheet, int fila, factura o)
        {
            sheet.Cells[fila, 7]  = "MEXICO";
            sheet.Cells[fila, 8]  = "TRAILER 48 CAJA SECA";
            sheet.Cells[fila, 9]  = o.ManiobraEntradaSalida.ToString();
            sheet.Cells[fila, 10] = o.ManiobraEntradaSalidaCantidad.ToString();
            ((Range)sheet.Cells[fila, 11]).FormulaR1C1 = "=RC[-2]*RC[-1]"; //=FC(-2)*FC(-1)

            #region Etiquetado
            sheet.Cells[fila, 12] = o.EtiquetaAduana19x10;
            sheet.Cells[fila, 13] = o.Piezas19x10;
            sheet.Cells[fila, 14] = o.EtiquetaAduana10x10;
            sheet.Cells[fila, 15] = o.Piezas10x10;
            ((Range)sheet.Cells[fila, 16]).FormulaR1C1 = "=(RC[-4]*RC[-3])+(RC[-2]*RC[-1])";//=(FC(-4)*FC(-3))+(FC(-2)*FC(-1))
            #endregion

            sheet.Cells[fila, 17] = o.Referencia;

            #region Trasnportes
            int NoCol        = 18;
            int NumParciales = 0;

            for (; NumParciales < o.LstTransporte.Count; NumParciales++)
            {
                Transporte oT = o.LstTransporte[NumParciales];
                sheet.Cells[fila, NoCol] = oT.Valor;
                NoCol++;
                sheet.Cells[fila, NoCol] = oT.Porcentaje;
                NoCol++;
            }
            int NoVacios = _maxColTransportes - o.LstTransporte.Count;
            for (NumParciales = 0; NumParciales < NoVacios; NumParciales++)
            {
                sheet.Cells[fila, NoCol] = 0;
                NoCol++;
                sheet.Cells[fila, NoCol] = 0;
                NoCol++;
            }
            #endregion

            #region Maniobras
            NoCol        = 18 + _maxColTransportes * 2;
            NumParciales = 0;

            for (; NumParciales < o.LstManiobra.Count; NumParciales++)
            {
                Maniobra oM = o.LstManiobra[NumParciales];
                sheet.Cells[fila, NoCol] = oM.Valor;
                NoCol++;
                sheet.Cells[fila, NoCol] = oM.Porcentaje;
                NoCol++;
            }
            NoVacios = _maxColManiobras - o.LstManiobra.Count;
            for (NumParciales = 0; NumParciales < NoVacios; NumParciales++)
            {
                sheet.Cells[fila, NoCol] = 0;
                NoCol++;
                sheet.Cells[fila, NoCol] = 0;
                NoCol++;
            }
            #endregion

            #region Otros
            sheet.Cells[fila, NoCol] = findOtroServicio(o.LstOtros, "Custodia").Cantidad;
            NoCol++;
            sheet.Cells[fila, NoCol] = findOtroServicio(o.LstOtros, "Custodia").Valor;
            NoCol++;
            sheet.Cells[fila, NoCol] = findOtroServicio(o.LstOtros, "Viaticos").Valor;
            NoCol++;
            sheet.Cells[fila, NoCol] = findOtroServicio(o.LstOtros, "Dictamen").Cantidad;
            NoCol++;
            sheet.Cells[fila, NoCol] = findOtroServicio(o.LstOtros, "Dictamen").Valor;
            NoCol++;
            ((Range)sheet.Cells[fila, NoCol]).FormulaR1C1 = "=RC[-3]+RC[-1]";
            NoCol++;
            #endregion

            #region Emplayado
            sheet.Cells[fila, NoCol] = o.PEmplayado.Valor;
            NoCol++;
            sheet.Cells[fila, NoCol] = o.PEmplayado.Cantidad;
            NoCol++;
            ((Range)sheet.Cells[fila, NoCol]).FormulaR1C1 = "=RC[-2]*RC[-1]";
            NoCol++;
            #endregion

            #region NoCuenta
            StringBuilder sbOC = new StringBuilder();
            foreach (Cliente_mercancia_cuenta itemCMC in o.PEntInv.PLstCteMercCta)
            {
                sbOC.Append(itemCMC.Orden.Replace(",", "/") + "/");
            }
            sheet.Cells[fila, NoCol] = sbOC.ToString().Substring(0, sbOC.ToString().Length - 1);

            NoCol++;
            NoVacios     = _maxColCuentasCont - o.PEntInv.PLstCteMercCta.Count;
            NumParciales = 0;
            for (; NumParciales < o.PEntInv.PLstCteMercCta.Count; NumParciales++)
            {
                Cliente_mercancia_cuenta oCMC = o.PEntInv.PLstCteMercCta[NumParciales];
                sheet.Cells[fila, NoCol] = oCMC.Cuenta;
                NoCol++;
            }

            NoCol += NoVacios;
            #endregion

            #region Sumatoria
            string formulaSumatoria = "=RC[-" + (2 + _maxColCuentasCont).ToString() + "]+RC[-" + (5 + _maxColCuentasCont).ToString() + "]+RC[-" + (9 + _maxColCuentasCont).ToString() + "]";
            int    sigCol           = 12 + _maxColCuentasCont;
            for (int iS = 1; iS <= _maxColManiobras; iS++)
            {
                formulaSumatoria += "+RC[-" + sigCol.ToString() + "]";
                sigCol           += 2;
            }
            for (int iS = 1; iS <= _maxColTransportes; iS++)
            {
                formulaSumatoria += "+RC[-" + sigCol.ToString() + "]";
                sigCol           += 2;
            }

            formulaSumatoria += "+RC[-" + sigCol.ToString() + "]";
            sigCol           += 5;
            formulaSumatoria += "+RC[-" + sigCol.ToString() + "]";
            ((Range)sheet.Cells[fila, NoCol]).FormulaR1C1 = formulaSumatoria;
            #endregion

            #region Iva y Total
            NoCol++;
            ((Range)sheet.Cells[fila, NoCol]).FormulaR1C1 = "=RC[-1]*.16";
            NoCol++;
            ((Range)sheet.Cells[fila, NoCol]).FormulaR1C1 = "=RC[-1]+RC[-2]";
            #endregion
        }