Exemplo n.º 1
0
        public static string Gravar(TRegistro_CTREstoque val, BancoDados.TObjetoBanco banco)
        {
            bool           st_transacao = false;
            TCD_CTREstoque qtb_ctrc     = new TCD_CTREstoque();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ctrc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ctrc.Banco_Dados = banco;
                }
                //Gravar Estoque CTRC
                string retorno = qtb_ctrc.Gravar(val);
                if (st_transacao)
                {
                    qtb_ctrc.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ctrc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar estoque CTRC: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ctrc.deletarBanco_Dados();
                }
            }
        }
Exemplo n.º 2
0
        public static void Processar(TRegistro_ConhecimentoFrete val, BancoDados.TObjetoBanco banco)
        {
            bool           st_transacao = false;
            TCD_CTREstoque qtb_ctrc     = new TCD_CTREstoque();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ctrc.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ctrc.Banco_Dados = banco;
                }
                val.lNf.ForEach(p =>
                                //Para cada nota fiscal buscar os itens
                                p.ItensNota = NotaFiscal.TCN_LanFaturamento_Item.Busca(p.Cd_empresa,
                                                                                       p.Nr_lanctofiscalstr,
                                                                                       string.Empty,
                                                                                       qtb_ctrc.Banco_Dados));
                //Totalizar os valores das notas fiscais
                decimal vl_total = val.lNf.Sum(p => p.ItensNota.Sum(v => v.Vl_subtotal + v.Vl_freteitem + v.Vl_ipi));
                val.lNf.ForEach(p =>
                {
                    CamadaDados.Faturamento.NotaFiscal.TList_RegLanFaturamento_CMI lFatCmi =
                        NotaFiscal.TCN_LanFaturamento_CMI.Busca(p.Cd_empresa,
                                                                p.Nr_lanctofiscal.ToString(),
                                                                0,
                                                                string.Empty,
                                                                qtb_ctrc.Banco_Dados);
                    if (lFatCmi.Exists(x => x.St_geraestoque.Trim().ToUpper().Equals("S")))
                    {
                        p.ItensNota.ForEach(v =>
                        {
                            if (v.St_servico.Trim().ToUpper() != "S")
                            {
                                v.Vl_complementoEstoqueCTRC = Math.Round(((val.Vl_frete * (((v.Vl_subtotal + v.Vl_freteitem + v.Vl_ipi) / vl_total) * 100)) / 100), 2);
                            }
                        });
                    }
                });
                //Validar total rateio do frete igual ao valor do frete
                decimal vl_diferenca = val.Vl_frete - val.lNf.Sum(p => p.ItensNota.Sum(v => v.Vl_complementoEstoqueCTRC));
                if (!vl_diferenca.Equals(0))
                {
                    for (int i = val.lNf.Count - 1; i >= 0; i--)
                    {
                        CamadaDados.Faturamento.NotaFiscal.TList_RegLanFaturamento_CMI lFatCmi =
                            NotaFiscal.TCN_LanFaturamento_CMI.Busca(val.lNf[i].Cd_empresa,
                                                                    val.lNf[i].Nr_lanctofiscal.ToString(),
                                                                    0,
                                                                    string.Empty,
                                                                    qtb_ctrc.Banco_Dados);
                        if (lFatCmi.Exists(x => x.St_geraestoque.Trim().ToUpper().Equals("S")))
                        {
                            val.lNf[i].ItensNota[val.lNf[i].ItensNota.Count - 1].Vl_complementoEstoqueCTRC += vl_diferenca;
                            break;
                        }
                    }
                }
                //Gravar lancamentos de estoque
                val.lNf.ForEach(p =>
                {
                    p.ItensNota.ForEach(v =>
                    {
                        if (v.Vl_complementoEstoqueCTRC > 0)
                        {
                            if (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ctrc.Banco_Dados).ProdutoConsumoInterno(v.Cd_produto))
                            {
                                if (new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ctrc.Banco_Dados).ProdutoComposto(v.Cd_produto))
                                {
                                    //Buscar versao da formula
                                    CamadaDados.Producao.Producao.TList_FichaTec_MPrima lFicha =
                                        new CamadaDados.Producao.Producao.TCD_FichaTec_MPrima(qtb_ctrc.Banco_Dados).Select(
                                            new TpBusca[]
                                    {
                                        new TpBusca()
                                        {
                                            vNM_Campo = string.Empty,
                                            vOperador = "exists",
                                            vVL_Busca = "(select 1 from tb_prd_formula_apontamento x " +
                                                        "inner join tb_prd_fichatec_acabado y " +
                                                        "on x.cd_empresa = y.cd_empresa " +
                                                        "and x.id_formulacao = y.id_formulacao " +
                                                        "where x.cd_empresa = a.cd_empresa " +
                                                        "and x.id_formulacao = a.id_formulacao " +
                                                        "and y.cd_empresa = '" + val.Cd_empresa.Trim() + "' " +
                                                        "and y.cd_produto = '" + v.Cd_produto.Trim() + "')"
                                        }
                                    }, 0, string.Empty);

                                    decimal qtd_itens = lFicha.Sum(q => q.Qtd_produto);
                                    lFicha.ForEach(r => r.Vl_complementoEstoqueCTRC = Math.Round(((v.Vl_complementoEstoqueCTRC * ((r.Qtd_produto / qtd_itens) * 100)) / 100), 2));
                                    decimal diferenca = v.Vl_complementoEstoqueCTRC - lFicha.Sum(r => r.Vl_complementoEstoqueCTRC);
                                    if (!vl_diferenca.Equals(0))
                                    {
                                        lFicha[lFicha.Count - 1].Vl_complementoEstoqueCTRC += vl_diferenca;
                                    }
                                    lFicha.ForEach(r =>
                                    {
                                        string ret_estoque = Estoque.TCN_LanEstoque.GravarEstoque(
                                            new CamadaDados.Estoque.TRegistro_LanEstoque()
                                        {
                                            Cd_empresa    = r.Cd_empresa,
                                            Cd_local      = r.Cd_local,
                                            Cd_produto    = r.Cd_produto,
                                            Ds_observacao = "CTRC: " + val.Nr_ctrcstr.Trim(),
                                            Dt_lancto     = val.Dt_saient,
                                            Qtd_entrada   = decimal.Zero,
                                            Qtd_saida     = decimal.Zero,
                                            St_registro   = "A",
                                            Tp_lancto     = "L",                         //Complemento
                                            Tp_movimento  = "E",
                                            Vl_subtotal   = r.Vl_complementoEstoqueCTRC,
                                            Vl_unitario   = r.Vl_complementoEstoqueCTRC
                                        }, qtb_ctrc.Banco_Dados);
                                        //Buscar Id_nota
                                        object obj_id_nota = new TCD_CTRNotaFiscal(qtb_ctrc.Banco_Dados).BuscarEscalar(
                                            new TpBusca[]
                                        {
                                            new TpBusca()
                                            {
                                                vNM_Campo = "a.cd_empresa",
                                                vOperador = "=",
                                                vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                                            },
                                            new TpBusca()
                                            {
                                                vNM_Campo = "a.nr_lanctofiscal",
                                                vOperador = "=",
                                                vVL_Busca = v.Nr_lanctofiscal.ToString()
                                            }
                                        }, "a.id_nota");
                                        TCN_CTREstoque.Gravar(
                                            new TRegistro_CTREstoque()
                                        {
                                            Cd_empresa       = r.Cd_empresa,
                                            Cd_produto       = r.Cd_produto,
                                            Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_estoque, "@@P_ID_LANCTOESTOQUE")),
                                            Nr_lanctoctr     = val.Nr_lanctoCTRC,
                                            Id_nota          = decimal.Parse(obj_id_nota.ToString()),
                                            Nr_lanctofiscal  = v.Nr_lanctofiscal,
                                            ID_NFItem        = v.Id_nfitem
                                        }, qtb_ctrc.Banco_Dados);
                                    });
                                }
                                else
                                {
                                    string ret_estoque = CamadaNegocio.Estoque.TCN_LanEstoque.GravarEstoque(
                                        new CamadaDados.Estoque.TRegistro_LanEstoque()
                                    {
                                        Cd_empresa    = val.Cd_empresa,
                                        Cd_local      = v.Cd_local,
                                        Cd_produto    = v.Cd_produto,
                                        Ds_observacao = "CTRC: " + val.Nr_ctrcstr.Trim(),
                                        Dt_lancto     = val.Dt_saient,
                                        Qtd_entrada   = decimal.Zero,
                                        Qtd_saida     = decimal.Zero,
                                        St_registro   = "A",
                                        Tp_lancto     = "L",                             //Complemento
                                        Tp_movimento  = "E",
                                        Vl_subtotal   = v.Vl_complementoEstoqueCTRC,
                                        Vl_unitario   = v.Vl_complementoEstoqueCTRC
                                    }, qtb_ctrc.Banco_Dados);
                                    //Buscar Id_nota
                                    object obj_id_nota = new CamadaDados.Faturamento.CTRC.TCD_CTRNotaFiscal(qtb_ctrc.Banco_Dados).BuscarEscalar(
                                        new TpBusca[]
                                    {
                                        new TpBusca()
                                        {
                                            vNM_Campo = "a.cd_empresa",
                                            vOperador = "=",
                                            vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                                        },
                                        new TpBusca()
                                        {
                                            vNM_Campo = "a.nr_lanctofiscal",
                                            vOperador = "=",
                                            vVL_Busca = v.Nr_lanctofiscal.ToString()
                                        }
                                    }, "a.id_nota");
                                    TCN_CTREstoque.Gravar(
                                        new TRegistro_CTREstoque()
                                    {
                                        Cd_empresa       = val.Cd_empresa,
                                        Cd_produto       = v.Cd_produto,
                                        Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_estoque, "@@P_ID_LANCTOESTOQUE")),
                                        Nr_lanctoctr     = val.Nr_lanctoCTRC,
                                        Id_nota          = decimal.Parse(obj_id_nota.ToString()),
                                        Nr_lanctofiscal  = v.Nr_lanctofiscal,
                                        ID_NFItem        = v.Id_nfitem
                                    }, qtb_ctrc.Banco_Dados);
                                }
                            }
                        }
                    });
                });
                if (st_transacao)
                {
                    qtb_ctrc.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ctrc.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar estoque conhecimento frete: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ctrc.deletarBanco_Dados();
                }
            }
        }