Ejemplo n.º 1
0
        public static string Excluir(TRegistro_Compra_Itens val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_Compra_Itens qtb_compra   = new TCD_Compra_Itens();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_compra.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_compra.Banco_Dados = banco;
                }
                //Excluir alocacao do item a os
                val.lItemOs.ForEach(p => TCN_CompraItens_X_PecaOS.Excluir(p, qtb_compra.Banco_Dados));
                if (!string.IsNullOrEmpty(val.Cd_empresa) &&
                    val.Id_compra.HasValue &&
                    val.Id_itemcompra.HasValue)
                {
                    if (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_compra.Banco_Dados).ProdutoConsumoInterno(val.Cd_produto))
                    {
                        //Cancelar estoque
                        TCN_CompraItens_X_Estoque.Buscar(val.Cd_empresa,
                                                         val.Id_comprastr,
                                                         val.Id_itemcomprastr,
                                                         qtb_compra.Banco_Dados).ForEach(p =>
                        {
                            Estoque.TCN_LanEstoque.CancelarEstoque(
                                new CamadaDados.Estoque.TRegistro_LanEstoque()
                            {
                                Cd_empresa       = p.Cd_empresa,
                                Cd_produto       = p.Cd_produto,
                                Id_lanctoestoque = p.Id_lanctoestoque.Value
                            }, qtb_compra.Banco_Dados);
                            TCN_CompraItens_X_Estoque.Excluir(p, qtb_compra.Banco_Dados);
                        });
                    }
                    else
                    {
                        //Cancelar estoque
                        TCN_CompraItens_X_Almox.Buscar(val.Cd_empresa,
                                                       val.Id_comprastr,
                                                       val.Id_itemcomprastr,
                                                       qtb_compra.Banco_Dados).ForEach(p =>
                        {
                            Almoxarifado.TCN_Movimentacao.Cancelar(
                                new CamadaDados.Almoxarifado.TRegistro_Movimentacao()
                            {
                                Cd_empresa   = p.Cd_empresa,
                                Cd_produto   = p.Cd_produto,
                                Id_movimento = p.Id_movimento
                            }, qtb_compra.Banco_Dados);
                            TCN_CompraItens_X_Almox.Excluir(p, qtb_compra.Banco_Dados);
                        });
                    }
                }
                qtb_compra.Excluir(val);
                if (st_transacao)
                {
                    qtb_compra.Banco_Dados.Commit_Tran();
                }
                return(val.Id_itemcomprastr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_compra.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir item compra: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_compra.deletarBanco_Dados();
                }
            }
        }
Ejemplo n.º 2
0
        public static string Gravar(TRegistro_Compra_Itens val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_Compra_Itens qtb_compra   = new TCD_Compra_Itens();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_compra.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_compra.Banco_Dados = banco;
                }
                val.Id_itemcomprastr = CamadaDados.TDataQuery.getPubVariavel(qtb_compra.Gravar(val), "@P_ID_ITEMCOMPRA");
                if (!string.IsNullOrEmpty(val.Cd_produto))
                {
                    //Produto movimenta estoque ou almoxarifado
                    if (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_compra.Banco_Dados).ProdutoConsumoInterno(val.Cd_produto))
                    {
                        if (new CamadaDados.Estoque.TCD_LanEstoque(qtb_compra.Banco_Dados).BuscarEscalar(
                                new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = string.Empty,
                                vOperador = "exists",
                                vVL_Busca = "(select 1 from TB_FAT_CompraItens_X_Estoque x " +
                                            "where x.id_lanctoestoque = a.id_lanctoestoque " +
                                            "and x.cd_empresa = '" + val.Cd_empresa.Trim() + "'" +
                                            "and x.id_compra = " + val.Id_comprastr + " " +
                                            "and x.id_itemcompra = " + val.Id_itemcomprastr + ") "
                            }
                        }, "1") == null)
                        {
                            //Gravar estoque da compra
                            string ret_estoque =
                                Estoque.TCN_LanEstoque.GravarEstoque(
                                    new CamadaDados.Estoque.TRegistro_LanEstoque()
                            {
                                Cd_empresa    = val.Cd_empresa,
                                Cd_produto    = val.Cd_produto,
                                Cd_local      = val.Cd_local,
                                Dt_lancto     = CamadaDados.UtilData.Data_Servidor(),
                                Tp_movimento  = "E",
                                Qtd_entrada   = val.Quantidade,
                                Qtd_saida     = decimal.Zero,
                                Vl_unitario   = Math.Round(decimal.Divide(val.Vl_subtotal + val.Vl_despesas - val.Vl_desconto, val.Quantidade), 7, MidpointRounding.AwayFromZero),
                                Vl_subtotal   = val.Vl_subtotal + val.Vl_despesas - val.Vl_desconto,
                                Tp_lancto     = "N",
                                Ds_observacao = "ENTRADA DEVIDA AO ROMANEIRO DE COMPRA N. " + val.Id_comprastr
                            }, qtb_compra.Banco_Dados);
                            //Gravar estoque X compra avulsa
                            TCN_CompraItens_X_Estoque.Gravar(new TRegistro_CompraItens_X_Estoque()
                            {
                                Cd_empresa       = val.Cd_empresa,
                                Id_compra        = val.Id_compra,
                                Id_itemcompra    = val.Id_itemcompra,
                                Cd_produto       = val.Cd_produto,
                                Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_estoque, "@@P_ID_LANCTOESTOQUE"))
                            }, qtb_compra.Banco_Dados);
                        }
                    }
                    else
                    {
                        if (new CamadaDados.Almoxarifado.TCD_Movimentacao(qtb_compra.Banco_Dados).BuscarEscalar(
                                new Utils.TpBusca[]
                        {
                            new Utils.TpBusca()
                            {
                                vNM_Campo = string.Empty,
                                vOperador = "exists",
                                vVL_Busca = "(select 1 from TB_FAT_CompraItens_X_Almox x " +
                                            "where x.id_movimento = a.id_movimento " +
                                            "and x.cd_empresa = '" + val.Cd_empresa.Trim() + "'" +
                                            "and x.id_compra = " + val.Id_comprastr + " " +
                                            "and x.id_itemcompra = " + val.Id_itemcomprastr + ") "
                            }
                        }, "1") == null)
                        {
                            //Buscar Almoxarifado
                            CamadaDados.Faturamento.Cadastros.TList_CfgCompraAvulsa lCfg =
                                new CamadaDados.Faturamento.Cadastros.TCD_CfgCompraAvulsa().Select(
                                    new Utils.TpBusca[]
                            {
                                new Utils.TpBusca()
                                {
                                    vNM_Campo = "a.cd_empresa",
                                    vOperador = "=",
                                    vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                                },
                                new Utils.TpBusca()
                                {
                                    vNM_Campo = "a.id_almox",
                                    vOperador = "is not",
                                    vVL_Busca = "null"
                                }
                            }, 1, string.Empty);
                            if (lCfg.Count == 0)
                            {
                                throw new Exception("Não existe configuração de almoxarifado para a empresa!");
                            }
                            //Criar registro movimentação
                            CamadaDados.Almoxarifado.TRegistro_Movimentacao rMov = new CamadaDados.Almoxarifado.TRegistro_Movimentacao();
                            rMov.Ds_observacao   = "ENTRADA REALIZADA PELO ROMANEIO DE COMPRA N. " + val.Id_itemcomprastr;
                            rMov.Cd_empresa      = val.Cd_empresa;
                            rMov.Id_almoxstr     = lCfg[0].Id_almoxstr;
                            rMov.Cd_produto      = val.Cd_produto;
                            rMov.Quantidade      = val.Quantidade;
                            rMov.Vl_unitario     = Math.Round(decimal.Divide(val.Vl_subtotal + val.Vl_despesas - val.Vl_desconto, val.Quantidade), 5, MidpointRounding.AwayFromZero);
                            rMov.Tp_movimento    = "E";
                            rMov.LoginAlmoxarife = Utils.Parametros.pubLogin;
                            rMov.Dt_movimento    = CamadaDados.UtilData.Data_Servidor();
                            rMov.St_registro     = "A";
                            //Gravar Movimentação
                            Almoxarifado.TCN_Movimentacao.Gravar(rMov, qtb_compra.Banco_Dados);
                            //Gravar almoxarifado X compra avulsa
                            TCN_CompraItens_X_Almox.Gravar(new TRegistro_CompraItens_X_Almox()
                            {
                                Cd_empresa      = val.Cd_empresa,
                                Id_compra       = val.Id_compra,
                                Id_itemcompra   = val.Id_itemcompra,
                                Cd_produto      = val.Cd_produto,
                                Id_movimentostr = rMov.Id_movimentostr
                            }, qtb_compra.Banco_Dados);
                        }
                    }
                }
                //Amarrar item a Ordem servico
                val.lItemOs.ForEach(p =>
                {
                    p.Cd_empresa    = val.Cd_empresa;
                    p.Id_compra     = val.Id_compra;
                    p.Id_itemcompra = val.Id_itemcompra;
                    TCN_CompraItens_X_PecaOS.Gravar(p, qtb_compra.Banco_Dados);
                });
                if (st_transacao)
                {
                    qtb_compra.Banco_Dados.Commit_Tran();
                }
                return(val.Id_itemcomprastr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_compra.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar itens compra: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_compra.deletarBanco_Dados();
                }
            }
        }