Example #1
0
        public void ProcesaActualizacionDeNumeroFiscalE(List <NFSe> listaFacturasNfse, string carpetaOrigen, string nombreArchivo, MainDB bdGP)
        {
            string rutaYNombreArchivo = string.Empty;
            int    numRegistros       = listaFacturasNfse.Count();

            try
            {
                String msj     = String.Empty;
                int    errores = 0;
                int    i       = 0;
                OnProgreso(1, "INICIANDO ACTUALIZACION DE NFS-e...");

                foreach (NFSe nfselectronica in listaFacturasNfse)
                {
                    rutaYNombreArchivo = Path.Combine(carpetaOrigen.Trim(), nombreArchivo);
                    msj = String.Empty;
                    var docVenta = bdGP.getFacturas(
                        false, string.Empty, string.Empty,
                        false, DateTime.Today, DateTime.Today,
                        false, string.Empty,
                        false, string.Empty,
                        false, string.Empty,
                        true, nfselectronica.Sopnumbe, nfselectronica.Sopnumbe).FirstOrDefault();
                    try
                    {
                        if (docVenta != null)
                        {
                            string tipoMEstados = "DOCVENTA-" + docVenta.estadoContabilizado;
                            nfselectronica.CicloDeVida = new Maquina(docVenta.estadoActual, docVenta.regimen, docVenta.voidstts, "emisor", tipoMEstados);
                            if (nfselectronica.CicloDeVida.Transiciona(Maquina.eventoUploadTxtPrefectura, 1))
                            {
                                bdGP.ActualizaNumeroFiscalElectronico(docVenta.soptype, nfselectronica.numNFSe, nfselectronica.Sopnumbe, out msj);

                                bdGP.CreaLogFactura(docVenta.soptype, nfselectronica.Sopnumbe, string.Empty, nfselectronica.CicloDeVida.idxTargetSingleStatus.ToString(), _usuario, string.Empty, nfselectronica.CicloDeVida.targetSingleStatus,
                                                    nfselectronica.CicloDeVida.targetBinStatus, nfselectronica.CicloDeVida.EstadoEnPalabras(nfselectronica.CicloDeVida.targetBinStatus));

                                bdGP.ActualizaOCreaLogFactura(docVenta.soptype, nfselectronica.Sopnumbe, rutaYNombreArchivo, nfselectronica.CicloDeVida.idxTargetSingleStatus.ToString(), _usuario, string.Empty,
                                                              Maquina.estadoBaseEmisor, Maquina.estadoBaseEmisor,
                                                              nfselectronica.CicloDeVida.targetBinStatus, nfselectronica.CicloDeVida.EstadoEnPalabras(nfselectronica.CicloDeVida.targetBinStatus));
                            }
                            else
                            {
                                msj += nfselectronica.CicloDeVida.sMsj;
                            }
                        }
                        else
                        {
                            msj += "La nota " + nfselectronica.Sopnumbe + " no existe en GP.";
                        }
                    }
                    catch (Exception lo)
                    {
                        string imsj = lo.InnerException == null ? "" : lo.InnerException.ToString();
                        msj = lo.Message + " " + imsj + Environment.NewLine + lo.StackTrace;
                        bdGP.CreaLogFactura(docVenta.soptype, nfselectronica.Sopnumbe, msj, "errDesconocido", _usuario, string.Empty, Maquina.estadoBaseError,
                                            nfselectronica.CicloDeVida.targetBinStatus, lo.Message);
                        errores++;
                    }
                    finally
                    {
                        OnProgreso(i * 100 / numRegistros, "Doc:" + nfselectronica.Sopnumbe + " " + msj.Trim() + Environment.NewLine);              //Notifica al suscriptor
                        i++;
                    }
                    if (errores > 10)
                    {
                        break;
                    }
                }
            }
            finally
            {
                OnProgreso(100, "-----------");
            }
            OnProgreso(100, "Proceso finalizado!");
        }