Ejemplo n.º 1
0
        //string
        public Mensaje getClaveStringMax(string tabla, List <CamposWhere> camposWhere, string campoBuscar, DBContextAdapter dbContext)
        {
            if (String.IsNullOrEmpty(tabla))
            {
                tabla = typeof(TEntity).Name;
            }
            CamposSelect campoSelect;

            if ((String.IsNullOrEmpty(campoBuscar)))
            {
                campoSelect = new CamposSelect(String.Concat(tabla, ".clave"), TipoFuncion.MAXIMO);
            }
            else
            {
                campoSelect = new CamposSelect(campoBuscar, TipoFuncion.MAXIMO);
            }
            List <CamposSelect> camposSelect = new List <CamposSelect>()
            {
                campoSelect
            };
            OperadorSelect select = new OperadorSelect(camposSelect);

            mensajeResultado = conectorQuerysGenericos.consultaGenerica(dbContext, TipoResultado.Unico, TipoOperacion.SELECT,
                                                                        tabla, select, null, camposWhere, null, null, null);

            return(mensajeResultado);
        }
Ejemplo n.º 2
0
 private void ConcatCampos(List <CamposSelect> lCampos, StringBuilder sCampos)
 {
     for (int i = 0; i < lCampos.Count; i++)
     {
         CamposSelect camp = lCampos[i];
         sCampos.Append(camp.sCampo + " " + camp.sAlias + ((i + 1) != lCampos.Count() ? "," : "") + Environment.NewLine);
     }
 }
        public Mensaje selectExisteClave(string tabla, CamposSelect campoSelect, List <CamposWhere> camposWhere, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra)
        {
            int tipoConexion = eligeConexionBDPorTabla(tabla);
            DBContextAdapter conexionUsada = null;

            if (tipoConexion == 1)
            {
                conexionUsada = dbContext;
            }
            else if (tipoConexion == 2)
            {
                conexionUsada = dbContextMaestra;
            }

            List <CamposSelect> camposSelect = new List <CamposSelect>()
            {
                campoSelect
            };
            OperadorSelect select = new OperadorSelect(camposSelect);

            mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionUsada, TipoResultado.Unico, TipoOperacion.SELECT,
                                                                        tabla, select, null, camposWhere, null, null, null);
            return(mensajeResultado);
        }
Ejemplo n.º 4
0
        public static DataTable BuscaItem(string seqNF, bool bEx)
        {
            List<CamposSelect> lCampos = new List<CamposSelect>();
            StringBuilder sCampos = new StringBuilder();
            StringBuilder sInnerJoin = new StringBuilder();
            StringBuilder sWhere = new StringBuilder();
            StringBuilder sGroup = new StringBuilder();

            try
            {

                #region Campos do Select
                //CD_DOC

                if (HlpDbFuncoes.fExisteCampo("CD_ANP", "PRODUTO"))
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(PRODUTO.CD_ANP,'0')", sAlias = "CD_ANP" });//OS_28293
                else
                    lCampos.Add(new CamposSelect { sCampo = "'0'", sAlias = "CD_ANP" });//OS_28293

                if (HlpDbFuncoes.fExisteCampo("vl_total_impostos", "MOVITEM"))
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_total_impostos,0)", sAlias = "vTotTrib", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//os_28878
                else
                    lCampos.Add(new CamposSelect { sCampo = "'0'", sAlias = "vTotTrib" });//os_28878

                if (HlpDbFuncoes.fExisteCampo("nr_fci", "MOVITEM"))
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.nr_fci,'')", sAlias = "nr_fci" });//OS_29280
                else
                    lCampos.Add(new CamposSelect { sCampo = "''", sAlias = "nr_fci" });//OS_29280

                //coalesce(m.vl_fattransp,0)vl_fattransp
                //coalesce(m.vl_aliqtransp,0)vl_aliqtransp
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_fattransp,0)", sAlias = "vl_fattransp", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//OS_29949
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_aliqtransp,0)", sAlias = "vl_aliqtransp" });//OS_29949

                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_siscomex,0)", sAlias = "vl_siscomex", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//OS_28303
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.CD_DOC,'')", sAlias = "CD_DOC" });//OS_27921
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.ST_ESTTERC,'N')", sAlias = "ST_ESTTERC" });//OS_27921
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_pauta,'N')", sAlias = "st_pauta" });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_frete_entra_ipi_s,'N')", sAlias = "st_frete_entra_ipi_s" });//OS_26866
                lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.ST_FRETE_ENTRA_ICMS_S,'N')", sAlias = "ST_FRETE_ENTRA_ICMS_S" });//OS_26866
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_baseicm,0)", sAlias = "vBC_Pauta", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.vl_icms,0)", sAlias = "vl_icms_Pauta", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//OS_25969
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.cd_pedcli,'')", sAlias = "xPed" });//OS_25977
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.nr_item_ped_compra,'')", sAlias = "nItemPed" });//OS_25977
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_servico,'')", sAlias = "st_servico" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_oper", sAlias = "cd_oper" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_soma_dev_tot_nf,'N')", sAlias = "st_soma_dev_tot_nf" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(produto.cd_orig_sittrib,0)", sAlias = "Orig" }); //os_26467 - CST_NOVAS
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_sittrib", sAlias = "CST" }); //CST Antiga
                lCampos.Add(new CamposSelect { sCampo = "coalesce(EMPRESA.ST_SUPERSIMPLES,'N')", sAlias = "ST_SUPERSIMPLES" }); //os_26817
                lCampos.Add(new CamposSelect { sCampo = "coalesce(MOVITEM.VL_BASEIPI,0)", sAlias = "VL_BASEIPI" }); //os_26467

                if (Acesso.IMPRIMI_NUM_PEDIDO_VENDA)
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.cd_pedido,'')", sAlias = "cd_pedido" });
                }
                if (Acesso.IMPRIMI_NUM_REVISAO)
                {
                    if (HlpDbFuncoes.fExisteCampo("CD_REVISAO", "MOVITEM"))
                        lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.CD_REVISAO,'')", sAlias = "CD_REVISAO" });
                    else
                        lCampos.Add(new CamposSelect { sCampo = "''", sAlias = "CD_REVISAO" });
                }

                if (Acesso.NM_RAMO == Acesso.BancoDados.INDUSTRIA) //SE FOR INDUSTRIA
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(tpdoc.st_compoe_vl_totprod_nf,'A')", sAlias = "st_compoe_vl_totprod_nf" });
                }
                if (Acesso.NM_EMPRESA != "MOGPLAST")
                {
                    lCampos.Add(new CamposSelect { sCampo = "case when empresa.st_codprodnfe = 'C' then produto.cd_prod else produto.cd_alter end", sAlias = "cProd" });
                }
                else
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when empresa.nm_empresa containing 'MOGPLAST' then " +
                                 "produto.ds_detalhe " +
                                 "else " +
                                 "case when empresa.st_codprodnfe = 'C' then " +
                                 "movitem.cd_prod else " +
                                 "movitem.cd_alter end " +
                                 "End ",
                        sAlias = "cProd"
                    });
                }
                if (Acesso.COD_BARRAS_XML.ToUpper() == "TRUE")
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_barras", sAlias = "cEAN" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_alter", sAlias = "cEAN" });
                }
                if (Acesso.NM_EMPRESA == "NAVE_THERM")
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when produto.ds_prod_compl is not null then " +
                            "substring(produto.ds_prod_compl from 1 for 120) " +
                            "else " +
                            "produto.ds_prod end ",
                        sAlias = "xProd"
                    });
                }
                else if (Acesso.NM_EMPRESA == "SENIRAM")
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.ds_detalhe", sAlias = "xProd" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.ds_prod", sAlias = "xProd" });

                }
                if (Acesso.DS_DETALHE)
                {
                    if (HlpDbFuncoes.fExisteCampo("DS_DETALHE", "PRODUTO"))
                    {
                        lCampos.Add(new CamposSelect { sCampo = "produto.DS_DETALHE", sAlias = "DS_DETALHE" });
                    }
                    else
                    {
                        lCampos.Add(new CamposSelect { sCampo = "''", sAlias = "DS_DETALHE" });
                    }
                }
                lCampos.Add(new CamposSelect { sCampo = "substring(clas_fis.ds_clasfis from 1 for 15)", sAlias = "NCM" });// Diego - 21/10 Lorenzon

                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_cfop", sAlias = "CFOP" });
                lCampos.Add(new CamposSelect { sCampo = "unidades.cd_unfat", sAlias = "uCom" });//Diego - OS_ 25/08/10

                lCampos.Add(new CamposSelect { sCampo = "movitem.qt_prod", sAlias = "qCom", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });


                if ((Acesso.NM_EMPRESA.Equals("MAD_STA_RITA")) || (Acesso.NM_EMPRESA.Equals("CONSTRUF")))
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_comprimento", sAlias = "vl_comprimento", bAgrupa = Acesso.bAGRUPA_ITENS_NFE }); // Diego - OS_25550  
                }
                if (Acesso.NM_EMPRESA.Equals("ZINCOBRIL")) //os_25787                
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.tp_industrializacao,'')", sAlias = "tp_industrializacao" });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(vl_uniprod_sem_desc,0)", sAlias = "vl_uniprod_sem_desc", bAgrupa = Acesso.bAGRUPA_ITENS_NFE  });//cast -> OS_25771 // 6 casas decimais

                if (!bEx)
                {
                    //cast(movitem.vl_uniprod as numeric (15,5))
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod", sAlias = "vUnCom" });//cast -> OS_25771 // 6 casas decimais
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_uniprod else movitem.vl_uniprod_ii end)", sAlias = "vUnCom", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                if (bEx) //DIEGO - OS_24730
                {
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_totbruto else (movitem.vl_uniprod_ii * movitem.qt_prod) end)", sAlias = "vProd", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totbruto", sAlias = "vProd", bAgrupa = Acesso.bAGRUPA_ITENS_NFE }); //2 casas decimais
                }//DIEGO - OS_24730 - FIM         

                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totliq", sAlias = "vl_totliq", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });// Diego 0S_24595                

                if (Acesso.COD_BARRAS_XML.ToUpper() == "TRUE")
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_barras", sAlias = "cEANTrib" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "produto.cd_alter", sAlias = "cEANTrib" });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_descsuframa,0) + coalesce(movitem.vl_desccofinssuframa,0) + coalesce(movitem.vl_descpissuframa,0)", sAlias = "vDescSuframa", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_desc,'U')", sAlias = "st_desc" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.cd_tpunid", sAlias = "uTrib" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.qt_prod", sAlias = "qTrib", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });


                if (!bEx)
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod", sAlias = "vUnTrib"  });
                }
                else
                {
                    // lCampos.Add(new CamposSelect { sCampo = "movitem.vl_uniprod_ii", sAlias = "vUnTrib" });
                    lCampos.Add(new CamposSelect { sCampo = "(case when movitem.vl_uniprod_ii = 0 then movitem.vl_uniprod else movitem.vl_uniprod_ii end)", sAlias = "vUnTrib" });

                    if (HlpDbFuncoes.fExisteCampo("vl_base_ii", "movitem"))
                    {
                        lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_base_ii,0)", sAlias = "bii", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                    }
                    else
                    {
                        lCampos.Add(new CamposSelect { sCampo = "'0'", sAlias = "bii" });
                    }

                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_base_ii,0)", sAlias = "bii", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_ii,0)", sAlias = "vl_ii", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(nf.st_ipi,'S')", sAlias = "st_ipi" }); //OS_25673
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_alicredicms", sAlias = "pCredSN" });//NFe_2.0
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_credicms", sAlias = "vCredICMSSN", bAgrupa = Acesso.bAGRUPA_ITENS_NFE }); // **

                #region BC_ICMS
                if (!bEx)
                {
                    List<string> lClientesLiberados = new List<string>();
                    lClientesLiberados.Add("CALDLASER");
                    lClientesLiberados.Add("ALPHAFLEX");
                    lClientesLiberados.Add("BENGALAS");
                    lClientesLiberados.Add("MASTERFEW");



                    //if (lClientesLiberados.Contains(Acesso.NM_EMPRESA.ToUpper()))
                    if (true) // liberado para todos os clientes
                    {
                        lCampos.Add(new CamposSelect
                        {
                            sCampo = "coalesce(MOVITEM.vl_baseicm,0)",
                            sAlias = "vBC",
                            bAgrupa = Acesso.bAGRUPA_ITENS_NFE
                        });
                    }
                    else
                    {
                        lCampos.Add(new CamposSelect
                        {
                            sCampo = GetSelectVbc(),
                            sAlias = "vBC",
                            bAgrupa = Acesso.bAGRUPA_ITENS_NFE
                        });
                    }
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_baseicm", sAlias = "vBC", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                #endregion

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_bicmproprio_subst,0) ", sAlias = "vBCProp", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });// Diego OS_25278
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_aliicms", sAlias = "pICMS" });//Diego - OS_24730


                if (bEx)
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_icms", sAlias = "vICMS", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_icms + movitem.vl_icmproprio_subst)", sAlias = "vICMS", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                //os_26817 - FIM

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when coalesce(tpdoc.st_nfcompl,'N') = 'N' then " +
                        "coalesce(movitem.vl_bicmssubst, 0) " +
                        "else " +
                        "nf.VL_BICMSSU " +
                        "end ",
                    sAlias = "vBCST",
                    bAgrupa = Acesso.bAGRUPA_ITENS_NFE
                });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(icm.vl_aliinte, 0)", sAlias = "pICMSST" });

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when coalesce(tpdoc.st_nfcompl,'N') = 'N' then "
                        + "coalesce(movitem.vl_icmretsubst, 0) "
                        + "else "
                        + "nf.VL_ICMSSUB "
                        + "end ",
                    sAlias = "vICMSST",
                    bAgrupa = Acesso.bAGRUPA_ITENS_NFE
                });

                lCampos.Add(new CamposSelect { sCampo = "(100-coalesce(movitem.vl_redbase, 0)) ", sAlias = "pRedBC", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(icm.vl_alisubs, 0)", sAlias = "pMVAST" });
                lCampos.Add(new CamposSelect { sCampo = "(100-coalesce(movitem.vl_redbase, 0))", sAlias = "pRedBCST", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliipi, 0)", sAlias = "pIPI" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_ipi, 0)", sAlias = "vIPI", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                if (Acesso.bAGRUPA_ITENS_NFE == false)
                {
                    lCampos.Add(new CamposSelect { sCampo = "nf.ds_anota", sAlias = "infAdProd", });
                }

                lCampos.Add(new CamposSelect { sCampo = "coalesce(clas_fis.st_tributacao, '1')", sAlias = "Tributa_ipi" });
                lCampos.Add(new CamposSelect { sCampo = "tpdoc.tp_doc", sAlias = "tp_doc" });

                lCampos.Add(new CamposSelect
                {
                    sCampo = "case when tpdoc.tp_doc = 'NS' then "
                        + "opereve.ST_CALCIPI_FA "
                        + "else "
                        + "opereve.st_ipi "
                        + "end ",
                    sAlias = "Calcula_IPI"
                });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_hefrete, 'N')", sAlias = "st_hefrete" });

                lCampos.Add(new CamposSelect { sCampo = "opereve.st_piscofins", sAlias = "st_piscofins" });

                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_frete, 0)", sAlias = "vFrete", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                if (Acesso.bAGRUPA_ITENS_NFE == false)
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.nr_lanc", sAlias = "nr_lanc" });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "0", sAlias = "nr_lanc", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                if (bEx)
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliqcofins_cif , 0)", sAlias = "vl_aliqcofins_suframa", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });//DIEGO - 24730 - 02/08
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.VL_ALIQPIS_CIF  , 0)", sAlias = "vl_aliqpis_suframa", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_percofins, 0)", sAlias = "vl_aliqcofins_suframa", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                    lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_perpis, 0)", sAlias = "vl_aliqpis_suframa", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                lCampos.Add(new CamposSelect { sCampo = "endentr.ds_endent", sAlias = "xLgr" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.ds_endent", sAlias = "xLgr" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nr_endent", sAlias = "nro" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nm_bairroent", sAlias = "xBairro" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.nm_cident", sAlias = "cMun" });
                lCampos.Add(new CamposSelect { sCampo = "endentr.cd_ufent", sAlias = "UF" });
                lCampos.Add(new CamposSelect { sCampo = "listaserv.ds_codigo", sAlias = "cListserv" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_aliqserv, 0)", sAlias = "vAliqISS", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                lCampos.Add(new CamposSelect { sCampo = "(movitem.vl_totliq * coalesce(movitem.vl_aliqserv, 0))/100", sAlias = "vIssqn", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_totliq", sAlias = "vBCISS", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                lCampos.Add(new CamposSelect { sCampo = "cidades.cd_municipio", sAlias = "cMunFG" });

                lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COEF", sAlias = "VL_COEF" });
                if (bEx)  //Diego - 02/08 - 24730
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.VL_COFINS", sAlias = "vl_cofins", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.VL_PIS", sAlias = "vl_pis", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                else
                {
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_cofins", sAlias = "vl_cofins", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.vl_pis", sAlias = "vl_pis", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                }
                lCampos.Add(new CamposSelect { sCampo = "movitem.vl_basecofins", sAlias = "vl_basecofins", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_basepis,0)", sAlias = "vl_basepis", bAgrupa = Acesso.bAGRUPA_ITENS_NFE });

                if (Acesso.NM_RAMO == Acesso.BancoDados.INDUSTRIA)
                {
                    lCampos.Add(new CamposSelect
                    {
                        sCampo = "case when empresa.ST_RASTREABILIDADE = '1' " +
                            "then " +
                            "coalesce(movitem.nr_lote,'') " +
                            "else '' " +
                            "end",
                        sAlias = "nr_lote"
                    });
                    lCampos.Add(new CamposSelect { sCampo = "movitem.cd_prodcli", sAlias = "cd_prodcli" });
                }

                if (Acesso.NM_EMPRESA == "MARPA")
                {

                    lCampos.Add(new CamposSelect { sCampo = "nf.vl_desccomer ", sAlias = "Desconto_Valor" });
                    lCampos.Add(new CamposSelect { sCampo = "(case when coalesce(nf.vl_totnf,0) > 0 then ((nf.vl_desccomer / nf.vl_totnf)*100) else '0' end)", sAlias = "Desconto_Percentual" });
                }
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBCOF", sAlias = "CD_SITTRIBCOF" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBIPI", sAlias = "CD_SITTRIBIPI" });
                lCampos.Add(new CamposSelect { sCampo = "movitem.CD_SITTRIBPIS", sAlias = "CD_SITTRIBPIS" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(movitem.vl_outras,'0') ", sAlias = "vOutro" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.st_tpoper,'0')", sAlias = "st_tpoper" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(opereve.ST_ESTTERC,'N')", sAlias = "ST_ESTTERC" });//NFe_2.0 OS_25346
                lCampos.Add(new CamposSelect { sCampo = "tpdoc.cd_operval", sAlias = "cd_operval" });
                lCampos.Add(new CamposSelect { sCampo = "coalesce(Empresa.st_imp_cdpedcli, 'N')", sAlias = "st_imp_cdpedcli" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nm_trans", sAlias = "Redespacho" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.ds_endnor", sAlias = "xLgrRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.cd_cgc", sAlias = "Transpcd_cgc" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nr_endnor", sAlias = "nroRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.ds_bairronor", sAlias = "xBairroRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.nm_cidnor", sAlias = "cmunRedes" });
                lCampos.Add(new CamposSelect { sCampo = "transpor.cd_ufnor", sAlias = "UFRedes" });

                #endregion

                sCampos.Append(Environment.NewLine + "Select " + Environment.NewLine);
                lCampos = lCampos.OrderBy(c => c.bAgrupa).ToList();
                for (int i = 0; i < lCampos.Count; i++)
                {
                    CamposSelect camp = lCampos[i];
                    string sFormat = "Sum({0}) ";
                    sCampos.Append((camp.bAgrupa ? string.Format(sFormat, camp.sCampo) : camp.sCampo) + " " + camp.sAlias + ((i + 1) != lCampos.Count() ? "," : "") + Environment.NewLine);
                }


                #region Inner Join
                //Tabelas
                sInnerJoin.Append("From MOVITEM ");

                //Relacionamentos
                sInnerJoin.Append("inner join nf on (nf.cd_empresa = movitem.cd_empresa)");
                sInnerJoin.Append(" and ");
                sInnerJoin.Append("(nf.cd_nfseq = movitem.cd_nfseq) ");
                sInnerJoin.Append("inner join empresa on (empresa.cd_empresa = movitem.cd_empresa) ");
                sInnerJoin.Append("inner join unidades on (movitem.cd_tpunid = unidades.cd_tpunid) "); // Diego - OS_ 25/08/10
                sInnerJoin.Append("left join clas_fis on (clas_fis.cd_empresa = movitem.cd_empresa)");
                sInnerJoin.Append(" and ");
                sInnerJoin.Append("(clas_fis.cd_cf = movitem.cd_cf) ");
                sInnerJoin.Append("left join icm on (icm.cd_ufnor = nf.cd_ufnor) ");
                sInnerJoin.Append("And ");
                sInnerJoin.Append("(icm.cd_aliicms = movitem.cd_aliicms) ");
                sInnerJoin.Append("left join opereve on (opereve.cd_oper = movitem.cd_oper) ");
                sInnerJoin.Append("left join tpdoc on (tpdoc.cd_tipodoc = nf.cd_tipodoc) ");
                sInnerJoin.Append("left join produto ");
                sInnerJoin.Append("on (produto.cd_empresa = movitem.cd_empresa) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(produto.cd_prod = movitem.cd_prod) ");
                sInnerJoin.Append("left join linhapro ");
                sInnerJoin.Append("on (linhapro.cd_empresa = produto.cd_empresa) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(linhapro.cd_linha = produto.cd_linha) ");
                sInnerJoin.Append("left join listaserv ");
                sInnerJoin.Append("on (listaserv.nr_lanc = linhapro.nr_lanclistaserv) ");
                sInnerJoin.Append("inner join clifor ");
                sInnerJoin.Append("on (clifor.cd_clifor = nf.cd_clifor) ");
                sInnerJoin.Append("left join cidades ");
                //sInnerJoin.Append("on (cidades.nm_cidnor = clifor.nm_cidnor) ");
                sInnerJoin.Append("on (cidades.cd_municipio = clifor.cd_municipio) ");
                //cidades.cd_municipio = clifor.cd_municipio
                sInnerJoin.Append("and ");
                sInnerJoin.Append("(cidades.cd_ufnor = clifor.cd_ufnor) ");
                sInnerJoin.Append("inner join uf on (clifor.cd_ufnor = uf.cd_uf) ");//25385
                sInnerJoin.Append("left join endentr on (endentr.cd_cliente = nf.cd_clifor) ");
                sInnerJoin.Append("and ");
                sInnerJoin.Append(" (endentr.cd_endent = nf.cd_endent) ");
                if ((Acesso.NM_EMPRESA == "NAVE_THERM") || (Acesso.NM_EMPRESA == "MOGPLAST"))
                {
                    sInnerJoin.Append("left join produto on (produto.cd_empresa = movitem.cd_empresa) ");
                    sInnerJoin.Append("And ");
                    sInnerJoin.Append("(produto.cd_prod = movitem.cd_prod)");
                }
                sInnerJoin.Append("left join transpor on (transpor.cd_trans = nf.cd_redes) ");
                #endregion

                #region Where
                sWhere.Append("Where ");
                sWhere.Append("(movitem.cd_empresa ='");
                sWhere.Append(Acesso.CD_EMPRESA);
                sWhere.Append("')");
                sWhere.Append(" and ");
                sWhere.Append("(nf.cd_nfseq = '");
                sWhere.Append(seqNF);
                sWhere.Append("') ");
                sWhere.Append((Acesso.bAGRUPA_ITENS_NFE == false ? "Order by movitem.nr_lanc" : ""));
                #endregion

                if (Acesso.bAGRUPA_ITENS_NFE)
                {
                    sGroup.Append(Environment.NewLine + " Group by " + Environment.NewLine);
                    lCampos = lCampos.Where(c => c.bAgrupa == false).ToList();
                    for (int i = 0; i < lCampos.Count; i++)
                    {
                        CamposSelect camp = lCampos[i];
                        if (camp.sCampo != "''")
                        {
                            sGroup.Append((camp.bAgrupa == false ? camp.sCampo + ((i + 1) < lCampos.Count() ? ", " : "") + Environment.NewLine : ""));
                        }
                    }
                }


                string sQueryItens = sCampos.ToString() + sInnerJoin + sWhere + (Acesso.bAGRUPA_ITENS_NFE ? sGroup.ToString() : "");

                return HlpDbFuncoes.qrySeekRet(sQueryItens.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 5
0
        public DataTable BuscaDadosServico(string sNota)
        {
            try
            {
                List <CamposSelect> lCampos    = new List <CamposSelect>();
                StringBuilder       sCampos    = new StringBuilder();
                StringBuilder       sInnerJoin = new StringBuilder();
                StringBuilder       sWhere     = new StringBuilder();
                StringBuilder       sGroup     = new StringBuilder();

                lCampos.Add(new CamposSelect {
                    sCampo = "movitem.ds_prod", sAlias = "ds_prod"
                });
                lCampos.Add(new CamposSelect {
                    sCampo = "coalesce(movitem.ds_obs,'')", sAlias = "ds_obs"
                });
                lCampos.Add(new CamposSelect {
                    sCampo = "movitem.vl_totbruto", sAlias = "vl_totbruto", bAgrupa = Acesso.bAGRUPA_ITENS_NFSE
                });
                lCampos.Add(new CamposSelect {
                    sCampo = "coalesce(produto.cd_trib_municipio,'')", sAlias = "cd_trib_municipio"
                });
                lCampos.Add(new CamposSelect {
                    sCampo = "coalesce(empresa.cd_lista_servico,'')", sAlias = "cd_lista_servico_Emp"
                });
                lCampos.Add(new CamposSelect {
                    sCampo = "coalesce(produto.cd_lista_servico,'')", sAlias = "cd_lista_servico_Prod"
                });

                sCampos.Append(Environment.NewLine + "Select " + Environment.NewLine);
                lCampos = lCampos.OrderBy(c => c.bAgrupa).ToList();
                for (int i = 0; i < lCampos.Count; i++)
                {
                    CamposSelect camp    = lCampos[i];
                    string       sFormat = "Sum({0}) ";
                    sCampos.Append((camp.bAgrupa ? string.Format(sFormat, camp.sCampo) : camp.sCampo) + " " + camp.sAlias + ((i + 1) != lCampos.Count() ? "," : "") + Environment.NewLine);
                }

                sInnerJoin.Append("from movitem ");
                sInnerJoin.Append("left join produto on movitem.cd_prod = produto.cd_prod ");
                sInnerJoin.Append("left join empresa on movitem.cd_empresa = empresa.cd_empresa ");

                #region Where
                sWhere.Append("Where ");
                sWhere.Append("movitem.cd_nfseq = '" + sNota + "' and ");
                sWhere.Append("movitem.cd_empresa = '" + Acesso.CD_EMPRESA + "' and ");
                sWhere.Append("produto.cd_empresa = '" + Acesso.CD_EMPRESA + "'");
                #endregion
                if (Acesso.bAGRUPA_ITENS_NFSE)
                {
                    sGroup.Append(Environment.NewLine + " Group by " + Environment.NewLine);
                    lCampos = lCampos.Where(c => c.bAgrupa == false).ToList();
                    for (int i = 0; i < lCampos.Count; i++)
                    {
                        CamposSelect camp = lCampos[i];
                        if (camp.sCampo != "''")
                        {
                            sGroup.Append((camp.bAgrupa == false ? camp.sCampo + ((i + 1) < lCampos.Count() ? ", " : "") + Environment.NewLine : ""));
                        }
                    }
                }

                string sQueryItens = sCampos.ToString() + sInnerJoin + sWhere + (Acesso.bAGRUPA_ITENS_NFSE ? sGroup.ToString() : "");
                return(HlpDbFuncoes.qrySeekRet(sQueryItens.ToString()));

                //StringBuilder sQuery = new StringBuilder();
                //sQuery.Append("Select ");
                //sQuery.Append("distinct movitem.ds_prod, coalesce(movitem.ds_obs,'')ds_obs  ,movitem.vl_totbruto,coalesce(produto.cd_trib_municipio,'')cd_trib_municipio, " +
                //              " coalesce(empresa.cd_lista_servico,'')cd_lista_servico_Emp, " +
                //              " coalesce(produto.cd_lista_servico,'')cd_lista_servico_Prod from movitem ");
                //sQuery.Append("left join produto on movitem.cd_prod = produto.cd_prod ");
                //sQuery.Append("left join empresa on movitem.cd_empresa = empresa.cd_empresa ");
                //sQuery.Append("where movitem.cd_nfseq = '" + sNota + "' and ");
                //sQuery.Append("movitem.cd_empresa = '" + Acesso.CD_EMPRESA + "' and ");
                //sQuery.Append("produto.cd_empresa = '" + Acesso.CD_EMPRESA + "'");

                //return HlpDbFuncoes.qrySeekRet(sQuery.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Mensaje consultaPorRangosFiltros(string tabla, ValoresRango valoresRango, List <CamposWhere> camposWhere, CamposSelect campoSelect, CamposOrden camposOrden, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra)
        {
            int tipoConexion = eligeConexionBDPorTabla(tabla);
            DBContextAdapter conexionUsada = null;

            if (tipoConexion == 1)
            {
                conexionUsada = dbContext;
            }
            else if (tipoConexion == 2)
            {
                conexionUsada = dbContextMaestra;
            }

            List <CamposSelect> camposSelect;

            if (campoSelect == null)
            {
                camposSelect = new List <CamposSelect>()
                {
                    new CamposSelect(tabla, TipoFuncion.NINGUNO)
                };
            }
            else
            {
                camposSelect = new List <CamposSelect>()
                {
                    campoSelect
                };
            }

            OperadorSelect     select          = new OperadorSelect(camposSelect);
            List <CamposOrden> listCamposOrden = new List <CamposOrden>();

            if (camposOrden != null)
            {
                listCamposOrden.Add(camposOrden);
            }
            select.todosDatos = true;
            mensajeResultado  = conectorQuerysGenericos.consultaGenerica(conexionUsada, TipoResultado.Lista, TipoOperacion.SELECT,
                                                                         tabla, select, null, camposWhere, null, listCamposOrden, valoresRango);
            return(mensajeResultado);
        }
Ejemplo n.º 7
0
        private Mensaje obtenerQueryPerzonalizado(string identificador, List <CamposWhere> listCamposWhere, bool uniqueResult, DBContextAdapter dbContext, DBContextAdapter dbContextMaestra)
        {
            List <object> camposWhere = new List <object>();

            mensajeResultado.error   = "";
            mensajeResultado.noError = 0;
            CamposSelect      campoSelect;
            OperadorSelect    operadorSelect;
            List <CamposFrom> listCamposFrom;
            CamposOrden       campoOrden;


            //Code 12630
            DBContextAdapter conexionUsada;

            if (dbContext != null)
            {
                conexionUsada = dbContext;
            }
            else
            {
                conexionUsada = dbContextMaestra;
            }


            TipoResultado tipoResultado = TipoResultado.Lista;

            if (uniqueResult)
            {
                tipoResultado = TipoResultado.Unico;
            }
            if (identificador.Equals("QueryEmpleadoFiniquito"))
            {
                campoSelect    = new CamposSelect("FiniqLiquidPlazas.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO);
                operadorSelect = new OperadorSelect(new List <CamposSelect>()
                {
                    campoSelect
                });
                listCamposFrom = new List <CamposFrom>()
                {
                    new CamposFrom("FiniqLiquidPlazas", TipoJoin.LEFT_JOIN), new CamposFrom("FiniqLiquidPlazas.finiquitosLiquida", TipoJoin.RIGHT_JOIN),
                    new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado", TipoJoin.RIGHT_JOIN), new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado.empleados", TipoJoin.RIGHT_JOIN),
                    new CamposFrom("FiniqLiquidPlazas.plazasPorEmpleado.razonesSociales", TipoJoin.RIGHT_JOIN)
                };
                listCamposWhere = listCamposWhere == null ? new List <CamposWhere>() : listCamposWhere;
                if (listCamposWhere.Count > 0)
                {
                    listCamposWhere[listCamposWhere.Count - 2].campo = "FiniqLiquidPlazas.plazasPorEmpleado.razonesSociales.clave";
                    listCamposWhere[listCamposWhere.Count - 1].campo = "FiniqLiquidPlazas.finiquitosLiquida.modoBaja";
                    listCamposWhere[listCamposWhere.Count - 1].operadorComparacion = OperadorComparacion.DIFERENTE;
                    listCamposWhere[listCamposWhere.Count - 1].operadorLogico      = OperadorLogico.OR;
                    List <CamposWhere> listSubCamposWhere = new List <CamposWhere>()
                    {
                        new CamposWhere("FiniqLiquidPlazas.id", 0, OperadorComparacion.IS_NULL, OperadorLogico.AND)
                    };
                    listCamposWhere[listCamposWhere.Count - 1].listCamposAgrupados = listSubCamposWhere;
                }
                campoOrden = new CamposOrden("FiniqLiquidPlazas.plazasPorEmpleado.empleados.clave");

                mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionUsada, tipoResultado, TipoOperacion.SELECT,
                                                                            "", operadorSelect, listCamposFrom, listCamposWhere, null, new List <CamposOrden>()
                {
                    campoOrden
                }, null);
                return(mensajeResultado);
            }
            else if (identificador.Equals("QueryEmpleadoEspecial") | identificador.Equals("QueryEmpleadoEspecialMovimientosNomina"))
            {
                if (identificador.ToUpper().Equals("QueryEmpleadoEspecial"))
                {
                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("PlazasPorEmpleadosMov.tipoNomina", TipoFuncion.NINGUNO),
                        new CamposSelect("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO)
                    });
                }
                else
                {
                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("PlazasPorEmpleadosMov", TipoFuncion.NINGUNO),
                        new CamposSelect("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados", TipoFuncion.NINGUNO)
                    });
                }

                CamposWhere campoWherePrincipal = new CamposWhere("PlazasPorEmpleadosMov.id", null, OperadorComparacion.IN, OperadorLogico.AND);

                SubConsulta    subConsulta       = new SubConsulta();
                CamposSelect   campoSelectSub    = new CamposSelect("PlazasPorEmpleadosMov.id", TipoFuncion.MAXIMO);
                OperadorSelect operadorSelectSub = new OperadorSelect(new List <CamposSelect>()
                {
                    campoSelectSub
                });

                if (listCamposWhere.Count > 0)
                {
                    int cont = 0, index = 0;
                    if (listCamposWhere.Count > 4)
                    {
                        index = 1;
                    }
                    bool aplicarRestriccionEmpleadoDadoDeBaja = false;
                    foreach (var campoWhere in listCamposWhere)
                    {
                        if (String.IsNullOrEmpty(campoWhere.campo))
                        {
                            if (cont == 0 + index)
                            {
                                campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.razonesSociales.clave";
                            }
                            else if (cont == (1 + index) & campoWhere.valor != null)
                            {
                                if (campoWhere.valor.GetType().Equals(typeof(TipoCorrida)))
                                {
                                    TipoCorrida corrida = (TipoCorrida)campoWhere.valor;
                                    if (corrida.clave.ToUpper().Equals("FIN") || corrida.clave.ToUpper().Equals("LIQ"))
                                    {
                                        aplicarRestriccionEmpleadoDadoDeBaja = false;
                                    }
                                    //consulta and parametros i++ =  parametro i ++ sabe em que se use mal codigo
                                }
                            }
                            else if (cont == 2 + index)
                            {
                                if (aplicarRestriccionEmpleadoDadoDeBaja)
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.fechaInicial";
                                    campoWhere.operadorComparacion = OperadorComparacion.MENOR_IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.OR;

                                    CamposWhere campoWhereSub = new CamposWhere("PlazasPorEmpleadosMov.fechaInicial", campoWhere.valor, OperadorComparacion.BETWEEN, OperadorLogico.AND);
                                    campoWhere.listCamposAgrupados = new List <CamposWhere>()
                                    {
                                        campoWhereSub
                                    };
                                }
                                else
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.fechaInicial";
                                    campoWhere.operadorComparacion = OperadorComparacion.IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.AND;
                                }
                            }
                            else if (cont == 3 + index)
                            {
                                if (aplicarRestriccionEmpleadoDadoDeBaja)
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal";
                                    campoWhere.operadorComparacion = OperadorComparacion.MAYOR_IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.OR;

                                    CamposWhere campoWhereSub = new CamposWhere("PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal", campoWhere.valor, OperadorComparacion.BETWEEN, OperadorLogico.AND);
                                    campoWhere.listCamposAgrupados = new List <CamposWhere>()
                                    {
                                        campoWhereSub
                                    };
                                }
                                else
                                {
                                    campoWhere.campo = "PlazasPorEmpleadosMov.plazasPorEmpleado.fechaFinal";
                                    campoWhere.operadorComparacion = OperadorComparacion.IGUAL;
                                    campoWhere.operadorLogico      = OperadorLogico.AND;
                                }
                            }
                            cont++;
                        }
                        else
                        {
                            if (!campoWhere.campo.Contains(typeof(PlazasPorEmpleadosMov).Name))
                            {
                                campoWhere.campo = String.Concat(typeof(PlazasPorEmpleadosMov).Name, ".", campoWhere.campo);
                            }
                        }
                    }
                }
                CamposGrupo campoGrupo = new CamposGrupo("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave");
                campoOrden = new CamposOrden("PlazasPorEmpleadosMov.plazasPorEmpleado.empleados.clave");

                mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionUsada, tipoResultado, TipoOperacion.SELECT,
                                                                            "", operadorSelect, null, listCamposWhere, new List <CamposGrupo>()
                {
                    campoGrupo
                }, new List <CamposOrden>()
                {
                    campoOrden, new CamposOrden("PlazasPorEmpleadosMov.fechaInicial")
                }, null);
            }
            else if (identificador.Equals("queryPlazasEmpleadoEspecial"))
            {
                bool                manejoPagoPorHora   = false;
                ManejoHorasPor      manejoPorHoras      = ManejoHorasPor.HSM;
                ManejoSalarioDiario manejoSalarioDiario = ManejoSalarioDiario.QUINCENAL;
                try
                {
                    setSession(dbContext.context);
                    getSession().Database.BeginTransaction();

                    #region  Maneja pago por horas

                    operadorSelect = new OperadorSelect(new List <CamposSelect>()
                    {
                        new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO)
                    });

                    var query = (from cr in getSession().Set <Cruce>()
                                 join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                                 join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroPagosPorHora && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                                 select cr.valor
                                 );

                    string valor = query.FirstOrDefault();

                    //List<CamposWhere> listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroPagosPorHora, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    //    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    //    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    //mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    //   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    //if (mensajeResultado.noError != 0) {
                    //    return mensajeResultado;
                    //}
                    //string valor = (string) mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroPagosPorHora, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroPagosPorHora && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }

                    if (valor.Equals(ClavesParametrosModulos.opcionParametroPagarPorHoras))
                    {
                        manejoPagoPorHora = true;
                    }
                    else
                    {
                        manejoPagoPorHora = false;
                    }

                    #endregion

                    #region  Manejo horas por
                    ////operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO) });
                    query = (from cr in getSession().Set <Cruce>()
                             join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                             join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                             where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarHorasPor && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                             select cr.valor
                             );

                    valor = query.FirstOrDefault();
                    ////listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroManejarHorasPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    ////mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    ////   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    ////if (mensajeResultado.noError != 0)
                    ////{
                    ////    return mensajeResultado;
                    ////}
                    ////valor = (string)mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroManejarHorasPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarHorasPor && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }
                    string opcionParametroHorasNaturales = "1";
                    if (valor.Equals(opcionParametroHorasNaturales))
                    {
                        manejoPorHoras = ManejoHorasPor.HORASNATURALES;
                    }
                    else
                    {
                        manejoPorHoras = ManejoHorasPor.HSM;
                    }
                    #endregion

                    #region  Manejo salario diario
                    ////operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Cruce.valor", TipoFuncion.NINGUNO) });

                    query = (from cr in getSession().Set <Cruce>()
                             join pr in getSession().Set <Parametros>() on cr.parametros_ID equals pr.id
                             join ea in getSession().Set <ElementosAplicacion>() on cr.elementosAplicacion_ID equals ea.id
                             where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarSalarioDiarioPor && ea.clave.Equals(ClavesParametrosModulos.claveElementoAplicacionRazonSocial) && cr.claveElemento.Equals(listCamposWhere[listCamposWhere.Count - 1].valor)
                             select cr.valor
                             );

                    valor = query.FirstOrDefault();
                    ////listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Cruce.parametros.clave", claveParametroManejarSalarioDiarioPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.elementosAplicacion.clave", claveElementoAplicacionRazonSocial, OperadorComparacion.IGUAL, OperadorLogico.AND),
                    ////    new CamposWhere("Cruce.claveElemento", listCamposWhere[listCamposWhere.Count - 1].valor, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                    ////mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                    ////   "", operadorSelect, null, listSubCamposWhere, null, null, null);
                    ////if (mensajeResultado.noError != 0)
                    ////{
                    ////    return mensajeResultado;
                    ////}
                    ////valor = (string)mensajeResultado.resultado;
                    if (String.IsNullOrEmpty(valor))
                    {
                        // operadorSelect = new OperadorSelect(new List<CamposSelect>() { new CamposSelect("Parametros.valor", TipoFuncion.NINGUNO) });
                        // listSubCamposWhere = new List<CamposWhere>() { new CamposWhere("Parametros.clave", claveParametroManejarSalarioDiarioPor, OperadorComparacion.IGUAL, OperadorLogico.AND),
                        // new CamposWhere("Parametros.modulo.clave", claveModuloGlobal, OperadorComparacion.IGUAL, OperadorLogico.AND)};

                        // mensajeResultado = conectorQuerysGenericos.consultaGenerica(conexionPendiente, TipoResultado.Unico, TipoOperacion.SELECT,
                        //"", operadorSelect, null, listSubCamposWhere, null, null, null);
                        // if (mensajeResultado.noError != 0)
                        // {
                        //     return mensajeResultado;
                        // }

                        // valor = (string)mensajeResultado.resultado;
                        query = (from pr in getSession().Set <Parametros>()
                                 join m in getSession().Set <Modulo>() on pr.modulo_ID equals m.id
                                 where pr.clave == (decimal)ClavesParametrosModulos.claveParametroManejarSalarioDiarioPor && m.clave.Equals(ClavesParametrosModulos.claveModuloGlobal)
                                 select pr.valor
                                 );
                        valor = query.FirstOrDefault();
                    }

                    if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioDiario))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.DIARIO;
                    }
                    else if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioSemanal))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.SEMANAL;
                    }
                    else if (valor.Equals(ClavesParametrosModulos.opcionParametroSalarioQuincenal))
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.QUINCENAL;
                    }
                    else
                    {
                        manejoSalarioDiario = ManejoSalarioDiario.MENSUAL;
                    }
                    #endregion
                    getSession().Database.CurrentTransaction.Commit();

                    setSession(dbContext.context);
                    getSession().Database.BeginTransaction();
                    var queryPrincipal = (from p in getSession().Set <PlazasPorEmpleadosMov>()
                                          join pe in getSession().Set <PlazasPorEmpleado>() on p.plazasPorEmpleado_ID equals pe.id into pe_join
                                          from pe in pe_join.DefaultIfEmpty()
                                          join emp2 in getSession().Set <Empleados>() on pe.empleados_ID equals emp2.id into emp2_join
                                          from emp2 in emp2_join.DefaultIfEmpty()
                                          where
                                          (from m in getSession().Set <PlazasPorEmpleadosMov>()
                                           join pe2 in getSession().Set <PlazasPorEmpleado>() on m.plazasPorEmpleado_ID equals pe2.id into pe2_join
                                           from pe2 in pe2_join.DefaultIfEmpty()
                                           join rs in getSession().Set <RazonesSociales>() on pe2.razonesSociales_ID equals rs.id into rs_join
                                           from rs in rs_join.DefaultIfEmpty()
                                           join emp3 in getSession().Set <Empleados>() on pe2.empleados_ID equals emp3.id into emp3_join
                                           from emp3 in emp3_join.DefaultIfEmpty()
                                           where
                                           rs.clave.Equals(listCamposWhere[listCamposWhere.Count - 1].valor) &&
                                           (DateTime.Now >= m.fechaInicial && DateTime.Now <= pe2.fechaFinal)
                                           group new { pe2, m } by new
                    {
                        pe2.referencia
                    } into g
                                           select new
                    {
                        Column1 = g.Max(pp => pp.m.id)
                    }).Contains(new { Column1 = p.id })
                                          select new { p, pe, emp2 }

                                          );

                    for (int i = 0; i < listCamposWhere.Count - 2; i++)
                    {
                        if (!String.IsNullOrEmpty(listCamposWhere[i].campo))
                        {
                            if (listCamposWhere[i].campo.Equals("ClaveEmpleado"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.emp2.clave.Equals(listCamposWhere[i].valor) select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("ClavePlazaEmpleado"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.pe.referencia.Equals(listCamposWhere[i].valor) select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("FechaInicial"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.fechaInicial == (DateTime)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("FechaFinal"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.pe.fechaFinal == (DateTime)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("Horas"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.horas == (int)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("Importe"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal where subquery.p.importe == (double)listCamposWhere[i].valor select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("DescripcionCentroCosto"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join cc in getSession().Set <CentroDeCosto>() on subquery.p.centroDeCosto_ID equals cc.id into cc_join
                                                  from cc in cc_join.DefaultIfEmpty()
                                                  where cc.descripcion.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("DescripcionPuesto"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join pt in getSession().Set <Puestos>() on subquery.p.puestos_ID equals pt.id into pt_join
                                                  from pt in pt_join.DefaultIfEmpty()
                                                  where pt.descripcion.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }

                            if (listCamposWhere[i].campo.Equals("ClavePlaza"))
                            {
                                queryPrincipal = (from subquery in queryPrincipal
                                                  join pz in getSession().Set <Plazas>() on subquery.p.plazas_ID equals pz.id into pz_join
                                                  from pz in pz_join.DefaultIfEmpty()
                                                  where pz.clave.Equals(listCamposWhere[i].valor)
                                                  select subquery);
                            }
                        }
                    }

                    var queryFinal = (from subquery in queryPrincipal
                                      orderby
                                      subquery.emp2.clave,
                                      subquery.p.fechaInicial
                                      select new DatosPlazasEmpleado()
                    {
                        plazasPorEmpleadosMov = subquery.p,
                        fechaIngreso =
                            ((from ingresos in getSession().Set <IngresosBajas>()
                              where
                              ingresos.id ==
                              (from ol in getSession().Set <IngresosBajas>()
                               where
                               ol.fechaIngreso <=
                               (from o2 in getSession().Set <IngresosBajas>()
                                join emp in getSession().Set <Empleados>() on ol.empleados_ID equals emp.id into emp_join
                                from emp in emp_join.DefaultIfEmpty()
                                where
                                o2.fechaBaja >= DateTime.Now &&
                                emp.clave == subquery.emp2.clave
                                select new
                        {
                            o2.fechaIngreso
                        }).Max(pp => pp.fechaIngreso)
                               select new
                        {
                            ol.id
                        }).Max(pp => pp.id)
                              select new
                        {
                            ingresos.fechaIngreso
                        }).First().fechaIngreso),
                        manejaPagosPorHora = manejoPagoPorHora ? 0 : 1,
                        manejoHorasPor = (int)manejoPorHoras,
                        manejoSalarioDiario = (int)manejoSalarioDiario
                    });

                    if (uniqueResult)
                    {
                        mensajeResultado.noError   = 0;
                        mensajeResultado.resultado = queryFinal.SingleOrDefault();
                    }
                    else
                    {
                        mensajeResultado.noError   = 0;
                        mensajeResultado.resultado = queryFinal.ToList();
                    }
                    getSession().Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(concatena.Remove(0, concatena.Length).Append(msgError).Append("buscaCFDIEmpleadosFiltrado()1_Error: ").Append(ex));
                    mensajeResultado.noError   = ControlErroresEntity.buscaNoErrorPorExcepcion(ex);
                    mensajeResultado.error     = ex.GetBaseException().ToString();
                    mensajeResultado.resultado = null;
                    getSession().Database.CurrentTransaction.Rollback();
                }
            }

            return(mensajeResultado);
        }