예제 #1
0
        //agreagdo para llevar la contabiliada inmediatamente  (Online)

        public void contabilizarOnline(String prefijo, int numero, DateTime fecha, String Almacen)
        {
            if (ConfigurationManager.AppSettings["ContabilidadAutomatica"] == null)
            {
                return;
            }
            if (Convert.ToBoolean(ConfigurationManager.AppSettings["ContabilidadAutomatica"]) == false)
            {
                return;
            }
            //    debe contabilizar SIEMPRE TODOS los documentos que envian a este proceso
            if (DBFunctions.RecordExist("select mnit_nit from CEMPRESA WHERE MNIT_NIT = '891409088' ")) // AYCO SI PREGUNTA POR LA PARAMETRIZACION DEL PREFIJO PARA CONTABILIZAR
            {
                if (!DBFunctions.RecordExist("select pdoc_codigo from PPUCHECHOSCABECERA where pdoc_codigo = '" + prefijo + "'"))
                {
                    return;
                }
            }
            string    errC, tipoProceso = "";
            ArrayList prefijos = new ArrayList();

            miInterface = new InterfaceContable();
            //        miInterface.Almacen = sede;
            miInterface.Anio       = (int)fecha.Year;
            miInterface.DiaInicial = (int)fecha.Day;
            miInterface.DiaFinal   = (int)fecha.Day;
            miInterface.Mes        = (int)fecha.Month; //DateTime.Now.Month;
            //miInterface.Mes = fecha.Month;
            miInterface.Usuario   = HttpContext.Current.User.Identity.Name.ToLower();
            miInterface.Procesado = DateTime.Now.Date;
            prefijos.Add(prefijo);
            miInterface.Prefijos = prefijos;

            try
            {
                tipoProceso = DBFunctions.SingleData("SELECT COALESCE(TPRO_PROCESO,'') FROM PPUCHECHOSCABECERA where PDOC_CODIGO='" + prefijo + "';");
            }
            catch
            {
                tipoProceso = ""; // SE toma este proceso por defecto
                Utils.MostrarAlerta(Response, "El tipo de proceso aun no se ha creado.");
            }

            try
            {
                miInterface.Armar_Cabecera(prefijo, numero);
            }
            catch (Exception ex)
            {
                errC = lbInfoCab.Text = ex.Source + " " + ex.StackTrace + " " + ex.Message;
                //goto Errores;
            }

            try
            {
                //
                miInterface.Armar_Detalles(prefijo, numero, numero, tipoProceso);
            }
            catch (Exception ex)
            {
                errC = lbInfoCab.Text = ex.Source + " " + ex.StackTrace + " " + ex.Message;
                //goto Errores;
            }
            try
            {
                if (tipoProceso == "CJ")
                {
                    string temP = DBFunctions.SingleData("SELECT PDOC_CODIGO             FROM MANULACIONCAJA WHERE PDOC_CODIANUL = '" + prefijo + "' AND MANU_NUMEANUL = " + numero + " ");
                    string temN = DBFunctions.SingleData("SELECT coalesce(MCAJ_NUMERO,0) FROM MANULACIONCAJA WHERE PDOC_CODIANUL = '" + prefijo + "' AND MANU_NUMEANUL = " + numero + " ");
                    miInterface.Armar_Detalles_Anulaciones(temP, Convert.ToInt32(temN), prefijo, Convert.ToInt32(numero), "CJ");
                    miInterface.Armar_Cabecera(prefijo, numero);
                }
            }
            catch
            {
            }

            try
            {
                if (tipoProceso == "TS")
                {
                    string temP = DBFunctions.SingleData("SELECT MTES_CODIGO               FROM DTESORERIAANULACION WHERE PDOC_CODIGO = '" + prefijo + "' AND MTES_NUMERO = " + numero + " ");
                    string temN = DBFunctions.SingleData("SELECT coalesce(MTES_NUMEANUL,0) FROM DTESORERIAANULACION WHERE PDOC_CODIGO = '" + prefijo + "' AND MTES_NUMERO = " + numero + " ");
                    miInterface.Armar_Detalles_Anulaciones(temP, Convert.ToInt32(temN), prefijo, Convert.ToInt32(numero), "TS");
                    miInterface.Armar_Cabecera(prefijo, numero);
                }
            }
            catch
            {
            }

            if (!miInterface.GuardarInterface())
            {
                if (lbInfo != null)
                {
                    lbInfo.Text = miInterface.Mensajes;
                }
                Tools.Mail envMail = new Mail();
                //              envMail.EnviarMail()
            }
        }
예제 #2
0
        /// <summary>
        /// Seleccion1_ECargarG : función delegada del evento DCargarG
        /// </summary>
        /// <param name="Inicio">ListBox origen</param>
        /// <param name="Final">ListBox destino</param>
        private void Seleccion1_ECargarG(ListBox Inicio, ListBox Final)
        {
            //Cambio hecho porque no se validan las fechas de ingreso, y cuando estan fuera de rango generan error
            bool fechaValida = true;

            try{ DateTime fecha1 = Convert.ToDateTime(this.año.SelectedValue + "-" + this.Mes.SelectedValue + "-" + this.DiaInicial.SelectedValue); }catch { fechaValida = false; }
            try{ DateTime fecha1 = Convert.ToDateTime(this.año.SelectedValue + "-" + this.Mes.SelectedValue + "-" + this.DiaFinal.SelectedValue); }catch { fechaValida = false; }
            if (!fechaValida)
            {
                Utils.MostrarAlerta(Response, "El rango de fechas ingresado no es valido. Revise por favor!");
                return;
            }
            int      ini = Int32.Parse(DiaInicial.SelectedValue.ToString());
            int      fin = Int32.Parse(DiaFinal.SelectedValue.ToString());
            DateTime fechaCont = new DateTime(Convert.ToInt32(DBFunctions.SingleData("SELECT PANO_ANO FROM CCONTABILIDAD")), Convert.ToInt32(DBFunctions.SingleData("SELECT PMES_MES FROM CCONTABILIDAD")), 1);
            DateTime fechaContI = new DateTime(Convert.ToInt32(año.SelectedValue), Convert.ToInt32(Mes.SelectedValue), 1);
            string   prefE = "", errC = "", numE = "", errS = "", errE = "";

            if (ini > fin)
            {
                lbInfo.Text = "El dia Inicial no puede ser mayor al dia Final";
                return;
            }
            if (ConfigurationManager.AppSettings["AMSDebug"] == null && DateTime.Compare(fechaContI, fechaCont) == -1)
            {
                if (!DBFunctions.RecordExist("SELECT TTIPE_CODIGO FROM SUSUARIO WHERE TTIPE_CODIGO = 'AS' AND SUSU_LOGIN = '******' "))
                //          Utils.MostrarAlerta(Response, "Atención, este mes ya está cerrado, su perfil SI permite realizar este proceso");
                //      else
                {
                    lbInfo.Text = errE = "El usuario " + HttpContext.Current.User.Identity.Name + " ha utilizado una fecha no válida.";
                    goto Errores;
                }
            }
            //    else
            {
                //
                if (Final.Items.Count > 0)
                {
                    ArrayList prefijos = new ArrayList();
                    for (int i = 0; i < Final.Items.Count; i++)
                    {
                        prefijos.Add(Final.Items[i].Value);
                    }
                    miInterface         = new InterfaceContable();
                    miInterface.Almacen = this.sede.SelectedValue;
                    if (Todas.Checked)
                    {
                        miInterface.TodosAlmacenes = true;
                    }
                    else
                    {
                        miInterface.TodosAlmacenes = false;
                    }
                    miInterface.Anio       = Convert.ToInt32(this.año.SelectedValue);
                    miInterface.DiaInicial = Convert.ToInt32(this.DiaInicial.SelectedValue);
                    miInterface.DiaFinal   = Convert.ToInt32(this.DiaFinal.SelectedValue);
                    miInterface.Mes        = Convert.ToInt32(this.Mes.SelectedValue);
                    miInterface.Usuario    = HttpContext.Current.User.Identity.Name.ToLower();
                    miInterface.Procesado  = DateTime.Now.Date;
                    miInterface.Prefijos   = prefijos;
                    //Hago un for para recorrer los distintos prefijos escogidos
                    for (int i = 0; i < miInterface.Prefijos.Count; i++)
                    {
                        //Ahora por cada prefijo armo las distintas cabeceras de
                        //los comprobantes
                        prefE = prefijos[i].ToString();
                        try
                        {
                            miInterface.Armar_Cabecera(prefijos[i].ToString());
                        }
                        catch (Exception ex)
                        {
                            errC = lbInfoCab.Text = ex.Source + " " + ex.StackTrace + " " + ex.Message;
                            goto Errores;
                        }
                        //Si se produjo algún error al crear la cabecera lo muestro
                        //en el label y rompo ese ciclo para no seguir generando
                        //cabeceras
                        if (miInterface.MensajesCabecera != string.Empty)
                        {
                            errC = lbInfoCab.Text = miInterface.MensajesCabecera;
                            goto Errores;
                        }
                        //Si no se produjo error al generar cabeceras, empiezo a recorrer dichas cabeceras
                        //para sacar los distintos detalles que existan para cada cabecera
                        int    numeroInicial = 999999999;
                        int    numeroFinal   = 0;
                        string tipoProceso   = "";
                        for (int j = 0; j < miInterface.TablaCabecera.Rows.Count; j++)
                        {
                            if (miInterface.TablaCabecera.Rows[j][0].ToString() == prefE)
                            {
                                if (Convert.ToInt32(miInterface.TablaCabecera.Rows[j][1]) > numeroFinal)
                                {
                                    numeroFinal = Convert.ToInt32(miInterface.TablaCabecera.Rows[j][1]);
                                }
                                if (Convert.ToInt32(miInterface.TablaCabecera.Rows[j][1]) < numeroInicial)
                                {
                                    numeroInicial = Convert.ToInt32(miInterface.TablaCabecera.Rows[j][1]);
                                }
                                tipoProceso = miInterface.TablaCabecera.Rows[j][9].ToString();
                                numE        = miInterface.TablaCabecera.Rows[j][1].ToString();
                            }
                        }
                        // un solo ciclo por todo el prefijo
                        if (numeroInicial != 999999999 && numeroFinal != 0)
                        {
                            try
                            {
                                //          miInterface.Armar_Detalles(miInterface.TablaCabecera.Rows[j][0].ToString(), Convert.ToInt32(miInterface.TablaCabecera.Rows[j][1]), miInterface.TablaCabecera.Rows[j][9].ToString());
                                miInterface.Armar_Detalles(prefijos[i].ToString(), numeroInicial, numeroFinal, tipoProceso);
                            }
                            catch (Exception ex)
                            {
                                errS = this.lbInfo.Text = ex.Source + " " + ex.StackTrace + " " + ex.Message;
                                goto Errores;
                            }
                        }

                        if (miInterface.erroresSql.Length > 0)
                        {
                            errS = this.lbInfo.Text = miInterface.erroresSql;
                            goto Errores;
                        }
                        //    }   aqui estaba el fin del ciclo for
                        // UN SOLO CICLO POR TODO EL PREFIJO


                        string pref, nume;
                        //Anulaciones Caja
                        if (miInterface.AnulacionesCaja)
                        {
                            int       desdeC    = miInterface.TablaCabecera.Rows.Count;
                            Hashtable prefijosA = miInterface.Armar_Cabecera_AnulacionesCaja(prefijos[i].ToString());
                            int       hastaC    = miInterface.TablaCabecera.Rows.Count;
                            for (int j = desdeC; j < hastaC; j++)
                            {
                                pref = miInterface.TablaCabecera.Rows[j][0].ToString();
                                nume = miInterface.TablaCabecera.Rows[j][1].ToString();
                                string[] tem = prefijosA[pref + "," + nume].ToString().Split(',');
                                miInterface.Armar_Detalles_Anulaciones(tem[0], Convert.ToInt32(tem[1]), pref, Convert.ToInt32(nume), "CJ");
                            }
                        }
                        //Anulaciones Tesoreria
                        if (miInterface.AnulacionesTesoreria)
                        {
                            int       desdeC    = miInterface.TablaCabecera.Rows.Count;
                            Hashtable prefijosA = miInterface.Armar_Cabecera_AnulacionesTesoreria(prefijos[i].ToString());
                            int       hastaC    = miInterface.TablaCabecera.Rows.Count;
                            for (int j = desdeC; j < hastaC; j++)
                            {
                                pref = miInterface.TablaCabecera.Rows[j][0].ToString();
                                nume = miInterface.TablaCabecera.Rows[j][1].ToString();
                                string[] tem = prefijosA[pref + "," + nume].ToString().Split(',');
                                miInterface.Armar_Detalles_Anulaciones(tem[0], Convert.ToInt32(tem[1]), pref, Convert.ToInt32(nume), "TS");
                            }
                        }
                    }   //  aqui termina el ciclo del for ?

                    dtCabeceras            = miInterface.TablaCabecera;
                    dtDetalles             = miInterface.TablaDetalles;
                    Session["dtCabeceras"] = dtCabeceras;
                    Session["dtDetalles"]  = dtDetalles;
                    ConstruirGrilla();
                    Session["Rep"] = RenderHtml();
                    RenderHtml();
                    DeshabilitarControles();
                }
                else
                {
                    Utils.MostrarAlerta(Response, "No se seleccionaron hechos que procesar, no se inicio el proceso");
                }
            }
            return;

Errores:
            //MailMessage MyMail = new MailMessage();
            //string msgMail = "";
            //MyMail.From = ConfigurationManager.AppSettings["EmailFrom"];
            //MyMail.To = ConfigurationManager.AppSettings["EmailContabilidad"];
            //MyMail.Subject = "AMS - Error Contabilizacion Hechos Economicos (" + this.año.SelectedValue + ", " + this.Mes.SelectedValue + ", " + this.DiaInicial.SelectedValue + " a " + DiaFinal.SelectedValue + ")";
            //msgMail += "Se ha presentado un error en la contabilización de los hechos economicos:<br>";
            //msgMail += "Fecha: " + this.año.SelectedValue + ", " + this.Mes.SelectedValue + ", " + this.DiaInicial.SelectedValue + " a " + DiaFinal.SelectedValue + "<br>";
            //if (errE.Length > 0) msgMail += errE + "<br>";
            //if (prefE.Length > 0) msgMail += "Prefijo: " + prefE + "<br>";
            //if (numE.Length > 0) msgMail += "Número: " + numE + "<br>";
            //if (errC.Length > 0) msgMail += miInterface.MensajesCabecera + "<br>";
            //if (errS.Length > 0) msgMail += "Error al generar el detalle: " + errS + "<br>";
            //MyMail.Body = (msgMail);
            //MyMail.BodyFormat = MailFormat.Html;
            try
            {
                //SmtpMail.Send(MyMail);
            }
            catch (Exception e)
            {
                //lbInfo.Text = "No se pudo enviar el correo informando el siguiente error:<br>" + msgMail;
            }
        }