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(); } } }
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(); } } }