Ejemplo n.º 1
0
        private string GetTabelas(bool fiscal, bool cliente)
        {
            var tabela = Complementos.Obtem(fiscal, cliente).Tabela;

            if (fiscal)
            {
                return(String.Format(@"mov_estoque{0} me
                    left join nota_fiscal nf on (me.idNf=nf.idNf)
                    left join produtos_nf pnf on (me.idProdNf=pnf.idProdNf)
                    left join natureza_operacao no on (pnf.idNaturezaOperacao=no.idNaturezaOperacao)",

                                     tabela));
            }
            else if (cliente)
            {
                return(String.Format(@"mov_estoque{0} me
                    left join nota_fiscal nf on (me.idNf=nf.idNf)
                    left join produtos_nf pnf on (me.idProdNf=pnf.idProdNf)
                    left join natureza_operacao no on (pnf.idNaturezaOperacao=no.idNaturezaOperacao)
                    left join produto_pedido_producao ppp on (me.idProdPedProducao=ppp.idProdPedProducao)",

                                     tabela));
            }
            else
            {
                return(@"mov_estoque me
                    left join nota_fiscal nf on (me.idNf=nf.idNf)
                    left join troca_devolucao td on (me.idTrocaDevolucao=td.idTrocaDevolucao)
                    left join produto_pedido_producao ppp on (me.idProdPedProducao=ppp.idProdPedProducao)
                    left join produto_impressao pi on (me.idRetalhoProducao=pi.idRetalhoProducao)");
            }
        }
Ejemplo n.º 2
0
        internal string SqlComparativo(uint idCliente, uint idLoja, string codInternoProd, string descrProd, int?numeroNfe, string dataIni, string dataFim,
                                       int tipoMov, int situacaoProd, uint idCfop, string idsGrupoProd, string idsSubgrupoProd, uint idCorVidro, uint idCorFerragem, uint idCorAluminio,
                                       bool fiscal, bool cliente, bool selecionar, out bool temFiltro, out string filtroAdicional)
        {
            temFiltro = false;
            string criterio = GetCriterio(idCliente, idLoja, codInternoProd, descrProd, null, numeroNfe, null, dataIni, dataFim, tipoMov, situacaoProd, idCfop,
                                          idsGrupoProd, idsSubgrupoProd, idCorVidro, idCorFerragem, idCorAluminio, fiscal, cliente);

            var compl = Complementos.Obtem(fiscal, cliente);

            StringBuilder sql = new StringBuilder("Select ");

            sql.AppendFormat(selecionar ? @"me.idMovEstoque{0} as idMovEstoque, me.idProd, me.saldoQtdeMov as qtdeSaldo" :
                             "count(*)", compl.Campo);

            sql.AppendFormat(@"
                from mov_estoque{0} me
                    left join nota_fiscal nf on (me.idNf=nf.idNf)
                    left join produtos_nf pnf on (me.idProdNf=pnf.idProdNf)
                    left join natureza_operacao no on (pnf.idNaturezaOperacao=no.idNaturezaOperacao)
                    left join produto p on (me.idProd=p.idProd)
                    left join grupo_prod g on (p.idGrupoProd=g.idGrupoProd)
                    Left Join produto_loja pl on (pl.idProd=me.idProd and pl.idLoja=me.idLoja)
                where g.tipoGrupo<>{1} {2}",

                             compl.Tabela,
                             (int)TipoGrupoProd.UsoConsumo,
                             FILTRO_ADICIONAL);

            StringBuilder fa = new StringBuilder();

            if (cliente && idCliente > 0)
            {
                fa.AppendFormat(" and me.idCliente={0}", idCliente);
            }

            if (idLoja > 0)
            {
                fa.AppendFormat(" and me.idLoja={0}", idLoja);
            }

            if (!String.IsNullOrEmpty(codInternoProd) || !String.IsNullOrEmpty(descrProd))
            {
                fa.AppendFormat(" and me.idProd in ({0})", ProdutoDAO.Instance.ObtemIds(codInternoProd, descrProd));
            }

            if (numeroNfe > 0)
            {
                fa.AppendFormat(" AND me.IdNf IN ({0})", NotaFiscalDAO.Instance.ObterIdsNf(null, numeroNfe.Value));
            }

            if (!String.IsNullOrEmpty(dataIni))
            {
                fa.Append(" and me.dataMov>=?dataIni");
            }

            if (!String.IsNullOrEmpty(dataFim))
            {
                fa.Append(" and me.dataMov<=?dataFim");
            }

            if (tipoMov > 0)
            {
                fa.AppendFormat(" and me.tipoMov={0}", tipoMov);
            }

            if (situacaoProd > 0)
            {
                sql.AppendFormat(" and p.situacao={0}", situacaoProd);
                temFiltro = true;
            }

            if ((fiscal || cliente) && idCfop > 0)
            {
                sql.AppendFormat(" and no.idCfop={0}", idCfop);
                temFiltro = true;
            }

            if (!String.IsNullOrEmpty(idsGrupoProd))
            {
                sql.AppendFormat(" and p.idGrupoProd IN ({0})", idsGrupoProd);
                temFiltro = true;
            }

            if (!string.IsNullOrEmpty(idsSubgrupoProd))
            {
                sql.AppendFormat(" and p.idSubgrupoProd IN({0})", idsSubgrupoProd);
                temFiltro = true;
            }

            if (idCorVidro > 0)
            {
                sql.AppendFormat(" and p.idCorVidro={0}", idCorVidro);
                temFiltro = true;
            }

            if (idCorFerragem > 0)
            {
                sql.AppendFormat(" and p.idCorFerragem={0}", idCorFerragem);
                temFiltro = true;
            }

            if (idCorAluminio > 0)
            {
                sql.AppendFormat(" and p.idCorAluminio={0}", idCorAluminio);
                temFiltro = true;
            }

            filtroAdicional = fa.ToString();
            return(sql.ToString());
        }
Ejemplo n.º 3
0
        internal string Sql(uint idCliente, uint idLoja, string codInternoProd, string descrProd, string ncm, int?numeroNfe, string codOtimizacao, string dataIni, string dataFim,
                            int tipoMov, int situacaoProd, uint idCfop, string idsGrupoProd, string idsSubgrupoProd, uint idCorVidro, uint idCorFerragem, uint idCorAluminio,
                            bool fiscal, bool cliente, bool ignorarUsoConsumo, List <Glass.Data.Model.TipoMercadoria> tipoMercadoria,
                            bool selecionar, out bool temFiltro, out string filtroAdicional)
        {
            temFiltro = false;
            var criterio = GetCriterio(idCliente, idLoja, codInternoProd, descrProd, ncm, numeroNfe, codOtimizacao, dataIni, dataFim, tipoMov, situacaoProd, idCfop,
                                       idsGrupoProd, idsSubgrupoProd, idCorVidro, idCorFerragem, idCorAluminio, fiscal, cliente);

            var compl = Complementos.Obtem(fiscal, cliente);
            var sql   = new StringBuilder("select ");

            sql.AppendFormat(selecionar ? @"me.idMovEstoque{0} as idMovEstoque, me.idProd, me.dataMov as data, 
                {1} as numeroDocumento, me.tipoMov as tipo, me.qtdeMov as qtde, me.valorMov as valor, 
                p.codInterno as codInternoProd, p.descricao as descrProd, me.saldoQtdeMov as qtdeSaldo, 
                me.saldoValorMov as valorSaldo, false as estoqueInicial, '{2}' as criterio,
                concat(g.descricao, if(s.idSubgrupoProd is not null, concat(' - ', s.descricao), '')) as descrTipoProd,
                coalesce({3}s.tipoCalculo, g.tipoCalculo) as tipoCalc, u.codigo as unidadeProd, COALESCE(ncm.ncm, p.ncm) as ncm" : "count(*)",
                             compl.Campo,
                             GetNumeroDocumento(fiscal, cliente), criterio,
                             fiscal ? "s.tipoCalculoNf, g.tipoCalculoNf, " : "");

            sql.AppendFormat(@"
                from {0}
                    left join produto p on (me.idProd=p.idProd)
                    left join grupo_prod g on (p.idGrupoProd=g.idGrupoProd)
                    left join subgrupo_prod s on (p.idSubgrupoProd=s.idSubgrupoProd)
                    left join unidade_medida u on (p.idUnidadeMedida=u.idUnidadeMedida)
                    Left Join produto_loja pl on (pl.idProd=me.idProd and pl.idLoja=me.idLoja)
                    LEFT JOIN
                    (
                        SELECT *
                        FROM produto_ncm
                    ) as ncm ON (me.IdLoja = ncm.IdLoja AND p.IdProd = ncm.IdProd)
                where exists (select * from produto where idProd=me.idProd) {1}",
                             GetTabelas(fiscal, cliente),
                             FILTRO_ADICIONAL);

            var filtroSql = ObterFiltroSql(
                (int)idCliente,
                (int)idLoja,
                codInternoProd,
                descrProd,
                ncm,
                numeroNfe,
                codOtimizacao,
                dataIni,
                dataFim,
                tipoMov,
                situacaoProd,
                (int)idCfop,
                idsGrupoProd,
                idsSubgrupoProd,
                (int)idCorVidro,
                (int)idCorFerragem,
                (int)idCorAluminio,
                fiscal,
                cliente,
                ignorarUsoConsumo,
                tipoMercadoria,
                out filtroAdicional,
                out temFiltro);

            sql.AppendFormat(filtroSql);

            return(sql.ToString());
        }
Ejemplo n.º 4
0
        internal string SqlEstoqueInicial(uint idCliente, uint idLoja, string codInternoProd, string descrProd, string ncm, int?numeroNfe, string codOtimizacao, string dataIni,
                                          string dataFim, int tipoMov, int situacaoProd, uint idCfop, string idsGrupoProd, string idsSubgrupoProd, uint idCorVidro, uint idCorFerragem,
                                          uint idCorAluminio, bool fiscal, bool cliente, bool ignorarUsoConsumo, List <TipoMercadoria> tipoMercadoria,
                                          bool selecionar, out bool temFiltro, out string filtroAdicional)
        {
            string criterio = GetCriterio(idCliente, idLoja, codInternoProd, descrProd, ncm, numeroNfe, codOtimizacao, dataIni, dataFim, tipoMov, situacaoProd, idCfop,
                                          idsGrupoProd, idsSubgrupoProd, idCorVidro, idCorFerragem, idCorAluminio, fiscal, cliente);

            var compl = Complementos.Obtem(fiscal, cliente);

            StringBuilder sql = new StringBuilder("select ");

            sql.AppendFormat(selecionar ? @"idMovEstoque, temp.idProd, date(?dataIni) as data,
                'Estoque inicial' as numeroDocumento, 1 as tipo, sum(qtdeSaldo) as qtde, sum(valor) as valor,
                p.codInterno as codInternoProd, p.descricao as descrProd, qtdeSaldo as qtdeSaldo,
                sum(valorSaldo) as valorSaldo, true as estoqueInicial, '{0}' as criterio, 
                concat(g.descricao, if(s.idSubgrupoProd is not null, concat(' - ', s.descricao), '')) as descrTipoProd,
                coalesce({1}s.tipoCalculo, g.tipoCalculo) as tipoCalc, u.codigo as unidadeProd, COALESCE(ncm.ncm, p.ncm) as ncm" : "sum(num)",
                             criterio,
                             fiscal ? "s.tipoCalculoNf, g.tipoCalculoNf, " : string.Empty);

            var idsProd = this.ExecuteMultipleScalar <int>(
                this.SqlEstoqueInicialIdsProd(
                    (int)idCliente,
                    (int)idLoja,
                    codInternoProd,
                    descrProd,
                    ncm,
                    numeroNfe,
                    codOtimizacao,
                    dataIni,
                    dataFim,
                    tipoMov,
                    situacaoProd,
                    (int)idCfop,
                    idsGrupoProd,
                    idsSubgrupoProd,
                    (int)idCorVidro,
                    (int)idCorFerragem,
                    (int)idCorAluminio,
                    fiscal,
                    cliente,
                    ignorarUsoConsumo,
                    tipoMercadoria,
                    out filtroAdicional,
                    out temFiltro),
                this.GetParams(dataIni, dataFim, ncm));

            if (!idsProd.Any(f => f > 0))
            {
                idsProd = new List <int> {
                    0
                };
            }

            sql.Append(" from (select ");
            sql.AppendFormat(selecionar ? @"me.idMovEstoque{0} as idMovEstoque, me.idProd, 
                me.qtdeMov as qtde, me.saldoValorMov as valor, me.saldoQtdeMov as qtdeSaldo,
                me.saldoValorMov as valorSaldo" : "count(*) as num", compl.Campo);

            sql.AppendFormat(@"
                from mov_estoque{0} me
                    left join (
                        select * from (
                            select idMovEstoque{1} as idMovEstoque, idProd, idLoja
                            from mov_estoque{0}
                            where idProd in ({2}) and idLoja={3} and dataMov < ?dataIni {4}
                            order by dataMov desc, idMovEstoque desc
                        ) as temp
                        group by idProd, idLoja
                    ) id on (me.idProd=id.idProd and me.idLoja=id.idLoja)
                where me.idMovEstoque{1}=id.idMovEstoque and me.idProd in ({2}) and me.idLoja={3}",

                             compl.Tabela,
                             compl.Campo,
                             string.Join(",", idsProd), idLoja, (cliente && idCliente > 0 ? " AND idCliente=" + idCliente : ""));

            sql.Append(" union all select ");
            sql.Append(selecionar ? @"null as idMovEstoque, idProd, cast(0 as decimal(12,2)) as qtde, 
                cast(0 as decimal(12,2)) as valor, cast(0 as decimal(12,2)) as qtdeSaldo,
                cast(0 as decimal(12,2)) as valorSaldo" : "count(*) as num");

            sql.AppendFormat(@"
                from produto
                where idProd in ({0})", string.Join(",", idsProd));

            sql.AppendFormat(@"
                ) as temp
                    left join produto p on (temp.idProd=p.idProd)
                    left join grupo_prod g on (p.idGrupoProd=g.idGrupoProd)
                    left join subgrupo_prod s on (p.idSubgrupoProd=s.idSubgrupoProd)
                    left join unidade_medida u on (p.idUnidadeMedida=u.idUnidadeMedida)
                    LEFT JOIN
                    (
                        SELECT *
                        FROM produto_ncm
                    ) as ncm ON ({1} = ncm.IdLoja AND p.IdProd = ncm.IdProd)
                where {0}
                group by idProd", "g.tipoGrupo<>" + (int)TipoGrupoProd.UsoConsumo, idLoja);

            return(sql.ToString());
        }