public static string AcertarVlMedio(TRegistro_LanEstoque val, TObjetoBanco banco) { bool st_transacao = false; TCD_LanEstoque qtb_estoque = new TCD_LanEstoque(); try { if (banco == null) { st_transacao = qtb_estoque.CriarBanco_Dados(true); } else { qtb_estoque.Banco_Dados = banco; } string retorno = qtb_estoque.AcertarVlMedio(val); if (st_transacao) { qtb_estoque.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_estoque.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro acertar valor medio: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_estoque.deletarBanco_Dados(); } } }
public static void CancelarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco) { bool st_transacao = false; TCD_LanEstoque qtb_est = new TCD_LanEstoque(); try { if (banco == null) { st_transacao = qtb_est.CriarBanco_Dados(true); } else { qtb_est.Banco_Dados = banco; } qtb_est.CancelarEstoque(val); if (st_transacao) { qtb_est.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_est.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro cancelar estoque: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_est.deletarBanco_Dados(); } } }
private void afterGrava() { if (rProd != null) { if (!string.IsNullOrEmpty(cd_tabelapreco.Text)) { if (vl_precovenda.Value > 0) { TRegistro_LanPrecoItem rPreco = new TRegistro_LanPrecoItem(); rPreco.CD_Empresa = cd_empresa.Text; rPreco.CD_TabelaPreco = cd_tabelapreco.Text; rPreco.Dt_preco = CamadaDados.UtilData.Data_Servidor(); rPreco.VL_PrecoVenda = vl_precovenda.Value; rProd.lPrecoItem.Add(rPreco); TCN_CadProduto.Gravar(rProd, null); MessageBox.Show("Produto Atualizado com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("É necessário informar tabela preço!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Adicionar Código de Barras if (!string.IsNullOrEmpty(codBarra.Text)) { rProd.lCodBarra.Add( new TRegistro_CodBarra() { Cd_codbarra = codBarra.Text }); } try { if (string.IsNullOrEmpty(cd_local.Text)) { MessageBox.Show("Informe o Local de Armazenagem para ajustar estoque!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); cd_local.Focus(); return; } if (qtd_entrada.Value.Equals(decimal.Zero)) { MessageBox.Show("Informe a QTD de ajuste de estoque do produto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); qtd_entrada.Focus(); return; } if (vl_entrada.Value.Equals(decimal.Zero)) { MessageBox.Show("Informe o Valor Médio do produto!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); vl_entrada.Focus(); return; } if (quantidade.Value != qtd_entrada.Value) { //Gravar no estoque TRegistro_LanEstoque regEstoque = new TRegistro_LanEstoque(); regEstoque.Cd_empresa = cd_empresa.Text; regEstoque.Cd_produto = cd_produto.Text; regEstoque.Cd_local = cd_local.Text; regEstoque.Dt_lancto = CamadaDados.UtilData.Data_Servidor(); regEstoque.Vl_medioestoque = vl_entrada.Value; regEstoque.St_registro = "A"; regEstoque.Tp_lancto = "M"; if (quantidade.Value < qtd_entrada.Value) { regEstoque.Tp_movimento = "E"; regEstoque.Qtd_entrada = qtd_entrada.Value - quantidade.Value; regEstoque.Vl_subtotal = vl_entrada.Value * (qtd_entrada.Value - quantidade.Value); } else { regEstoque.Tp_movimento = "S"; regEstoque.Qtd_saida = quantidade.Value - qtd_entrada.Value; regEstoque.Vl_subtotal = vl_entrada.Value * (quantidade.Value - qtd_entrada.Value); } regEstoque.Vl_unitario = vl_entrada.Value; //Gravar Estoque TCN_LanEstoque.GravarEstoque(regEstoque, null); //Atualizar Vl.Médio TCN_LanEstoque.AcertarVlMedio(regEstoque, null); } else { MessageBox.Show("Não é possivel alterar estoque de produto mantendo a mesma quantidade!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Gravar Produto CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Gravar(rProd, null); MessageBox.Show("Produto Atualizado com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); LimparCampos(); BB_Gravar.Visible = false; BB_Cancelar.Visible = false; BB_Novo.Visible = true; pDados.Enabled = false; } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
public static TList_Apontamento_Estoque ProcessarEstoqueFichaTec_MPrima(TList_FichaTec_MPrima val, decimal Qtd_batch, DateTime?Dt_estoque, bool St_decomposicao, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_FichaTec_MPrima qtb_ficha = new TCD_FichaTec_MPrima(); try { if (banco == null) { st_transacao = qtb_ficha.CriarBanco_Dados(true); } else { qtb_ficha.Banco_Dados = banco; } TList_Apontamento_Estoque lEstoque = new TList_Apontamento_Estoque(); val.ForEach(p => { #region if produto composto e formula for nula if ((new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoComposto(p.Cd_produto)) && (p.Id_formulacao_mprima == null)) { TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao(); rApontamento.Cd_empresa = p.Cd_empresa; rApontamento.Dt_apontamento = Dt_estoque; rApontamento.Dt_validade = Dt_estoque; rApontamento.Qtd_batch = p.Qtd_produto * Qtd_batch; rApontamento.LFormulaApontamento = new TList_FormulaApontamento() { TCN_FormulaApontamento.CriarFormulaApontamentoProd(p.Cd_empresa, p.Cd_produto, p.Cd_unidade, p.Cd_local, //St_decomposicao, qtb_ficha.Banco_Dados) }; //Gravar Formula Apontamento rApontamento.LFormulaApontamento.ForEach(x => { x.St_decomposicao = St_decomposicao; TCN_FormulaApontamento.Gravar(x, qtb_ficha.Banco_Dados); }); //Calcular custo MPD TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados); //Calcular custo fixo TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados); //Chamar metodo Gravar Apontamento recursivamente p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento, qtb_ficha.Banco_Dados)); } #endregion #region else if formula diferente de nulll else if (p.Id_formulacao_mprima != null) { //Buscar formula apontamento TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao(); rApontamento.Cd_empresa = p.Cd_empresa; rApontamento.Dt_apontamento = Dt_estoque; rApontamento.Dt_validade = Dt_estoque; rApontamento.Qtd_batch = p.Qtd_produto * Qtd_batch; rApontamento.LFormulaApontamento = TCN_FormulaApontamento.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); //Buscar ficha tecnica da formula rApontamento.LFormulaApontamento[0].LFichaTec_MPrima = TCN_FichaTec_MPrima.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); //Buscar Custo rApontamento.LFormulaApontamento[0].LCustoFixo = TCN_CustoFixo_Direto.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); rApontamento.Qtd_batch = Math.Round(p.Qtd_produto / TCN_CadConvUnidade.ConvertUnid(rApontamento.LFormulaApontamento[0].Cd_unidade, rApontamento.LFormulaApontamento[0].Cd_unidProduto, rApontamento.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados), 0); //Calcular custo MPD TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados); //Calcular custo fixo TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados); //Chamar metodo Gravar Apontamento recursivamente p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento, qtb_ficha.Banco_Dados)); } #endregion //Gravar estoque TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque(); rEstoque.Cd_empresa = p.Cd_empresa; rEstoque.Cd_local = p.Cd_local; rEstoque.Cd_produto = p.Cd_produto; rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO"; rEstoque.Dt_lancto = Dt_estoque; rEstoque.Tp_movimento = !St_decomposicao ? "S" : "E"; rEstoque.Qtd_entrada = St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unid_produto, p.Qtd_produto * Qtd_batch, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Qtd_saida = !St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unid_produto, p.Qtd_produto * Qtd_batch, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Vl_unitario = p.Vl_unitario; rEstoque.Vl_subtotal = rEstoque.Vl_unitario * (St_decomposicao ? rEstoque.Qtd_entrada : rEstoque.Qtd_saida); rEstoque.Tp_lancto = "N"; TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados); lEstoque.Add(new TRegistro_Apontamento_Estoque() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Id_lanctoestoque = rEstoque.Id_lanctoestoque, Vl_custocontabil = p.Vl_custo }); }); if (st_transacao) { qtb_ficha.Banco_Dados.Commit_Tran(); } return(lEstoque); } catch (Exception ex) { if (st_transacao) { qtb_ficha.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_ficha.deletarBanco_Dados(); } } }
public static string Gravar2(TRegistro_ApontamentoProducao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ApontamentoProducao qtb_ap = new TCD_ApontamentoProducao(); try { if (banco == null) { st_transacao = qtb_ap.CriarBanco_Dados(true); } else { qtb_ap.Banco_Dados = banco; } //Gravar apontamento val.St_registro = "1"; val.Id_apontamento = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_ap.Gravar(val), "@P_ID_APONTAMENTO")); decimal custo = decimal.Zero; //Baixar estoque ficha tecnica TCN_Ordem_MPrima.Buscar(val.Id_ordemstr, qtb_ap.Banco_Dados) .ForEach(v => { //Incluir apontamento TCN_Apontamento_MPrima.Gravar( new TRegistro_Apontamento_MPrima { Id_apontamento = val.Id_apontamento.Value, Cd_produto = v.Cd_produto, Cd_unidade = v.Cd_unidade, Cd_local = v.Cd_local, Qtd_produto = v.Qtd_produto, Pc_quebratec = v.Pc_quebratec }, qtb_ap.Banco_Dados); //Gravar estoque TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque(); rEstoque.Cd_empresa = v.CD_Empresa; rEstoque.Cd_local = v.Cd_local; rEstoque.Cd_produto = v.Cd_produto; rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO"; rEstoque.Dt_lancto = val.Dt_apontamento; rEstoque.Tp_movimento = "S"; rEstoque.Qtd_entrada = decimal.Zero; rEstoque.Qtd_saida = v.Qtd_produto; rEstoque.Vl_unitario = TCN_LanEstoque.BuscarVlEstoqueUltimaCompra(v.CD_Empresa, v.Cd_produto, qtb_ap.Banco_Dados); rEstoque.Vl_subtotal = v.Qtd_produto * rEstoque.Vl_unitario; rEstoque.Tp_lancto = "N"; custo += rEstoque.Vl_subtotal; TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ap.Banco_Dados); //Apontamento x estoque TCN_Apontamento_Estoque.GravarApontamentoEstoque( new TRegistro_Apontamento_Estoque { Id_apontamento = val.Id_apontamento, Cd_empresa = rEstoque.Cd_empresa, Cd_produto = rEstoque.Cd_produto, Id_lanctoestoque = rEstoque.Id_lanctoestoque, Vl_custocontabil = rEstoque.Vl_subtotal }, qtb_ap.Banco_Dados); }); //Dar entrada estoque produto acabado TRegistro_OrdemProducao rOrdem = TCN_OrdemProducao.Buscar(val.Id_ordemstr, val.Cd_empresa, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, qtb_ap.Banco_Dados)[0]; TRegistro_LanEstoque rEstAcab = new TRegistro_LanEstoque(); rEstAcab.Cd_empresa = rOrdem.Cd_empresa; rEstAcab.Cd_local = rOrdem.Cd_local; rEstAcab.Cd_produto = rOrdem.Cd_produto; rEstAcab.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO"; rEstAcab.Dt_lancto = val.Dt_apontamento; rEstAcab.Tp_movimento = "E"; rEstAcab.Qtd_entrada = rOrdem.Qtd_saldoproduzir; rEstAcab.Qtd_saida = decimal.Zero; rEstAcab.Vl_unitario = Math.Round(decimal.Divide(custo, rOrdem.Qtd_saldoproduzir), 7, MidpointRounding.AwayFromZero); rEstAcab.Vl_subtotal = custo; rEstAcab.Tp_lancto = "N"; TCN_LanEstoque.GravarEstoque(rEstAcab, qtb_ap.Banco_Dados); //Apontamento x estoque TCN_Apontamento_Estoque.GravarApontamentoEstoque( new TRegistro_Apontamento_Estoque { Id_apontamento = val.Id_apontamento, Cd_empresa = rEstAcab.Cd_empresa, Cd_produto = rEstAcab.Cd_produto, Id_lanctoestoque = rEstAcab.Id_lanctoestoque, Vl_custocontabil = custo }, qtb_ap.Banco_Dados); //Gravar Ordem x Apontamento TCN_OrdemProducao_X_Apontamento.Gravar( new TRegistro_OrdemProducao_X_Apontamento { Id_apontamento = val.Id_apontamento, Id_ordem = val.Id_ordem }, qtb_ap.Banco_Dados); //Alterar status serie para P-Processada TCN_SerieProduto.Buscar(string.Empty, string.Empty, string.Empty, val.Id_ordemstr, qtb_ap.Banco_Dados) .ForEach(p => { p.St_registro = "P"; TCN_SerieProduto.Gravar(p, qtb_ap.Banco_Dados); }); //Gravar custo total materia prima val.Vl_custo_mpd = custo; qtb_ap.Gravar(val); if (st_transacao) { qtb_ap.Banco_Dados.Commit_Tran(); } return(val.Id_apontamentostr); } catch (Exception ex) { if (st_transacao) { qtb_ap.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar apontamento: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_ap.deletarBanco_Dados(); } } }
public static string GravaLanInsumos(TRegistro_LanInsumos val, TObjetoBanco banco) { bool pode_liberar = false; TCD_LanInsumos lanInsumo = new TCD_LanInsumos(); try { if (banco == null) { lanInsumo.CriarBanco_Dados(true); pode_liberar = true; banco = lanInsumo.Banco_Dados; } else { lanInsumo.Banco_Dados = banco; } string retorno = ""; TRegistro_LanInsumos_X_Estoque InsumoEstoque = new TRegistro_LanInsumos_X_Estoque(); if (val.ID_Requisicao <= 0 || val.ID_Requisicao == null) { decimal saldo = 0; TCN_LanEstoque.SaldoEstoqueLocal(val.CD_Empresa, val.CD_Produto, val.CD_Local, ref saldo, banco); if (val.Quantidade > saldo) { throw new Exception("Atenção, não há SALDO suficiente desse PRODUTO no LOCAL DE ARMAZENAGEM!"); } //GRAVA O LANÇAMENTO EM ESTOQUE TRegistro_LanEstoque reg_estoque = new TRegistro_LanEstoque(); reg_estoque.Cd_produto = val.CD_Produto; reg_estoque.Cd_local = val.CD_Local; reg_estoque.Qtd_entrada = 0; reg_estoque.Qtd_saida = val.Quantidade; reg_estoque.Cd_empresa = val.CD_Empresa; reg_estoque.St_registro = "A"; reg_estoque.Vl_unitario = val.VL_Unitario; reg_estoque.Vl_subtotal = val.VL_Total; reg_estoque.Tp_movimento = "S"; reg_estoque.Ds_observacao = "LANÇAMENTO DE INSUMO CÓDIGO DO INSUMO - " + val.CD_Produto; reg_estoque.Tp_lancto = "N"; TCD_LanEstoque TCD_Estoque = new TCD_LanEstoque(); TCD_Estoque.Banco_Dados = banco; string ret_estoque = TCD_Estoque.GravaEstoque(reg_estoque); InsumoEstoque.Id_LanctoEstoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_estoque, "@@P_ID_LANCTOESTOQUE")); } else { TpBusca[] filtro = new TpBusca[0]; Array.Resize(ref filtro, filtro.Length + 1); filtro[0].vNM_Campo = "d.cd_EMPRESA"; filtro[0].vOperador = "="; filtro[0].vVL_Busca = "'" + val.CD_Empresa + "'"; Array.Resize(ref filtro, filtro.Length + 1); filtro[1].vNM_Campo = "a.cd_produto"; filtro[1].vOperador = "="; filtro[1].vVL_Busca = "'" + val.CD_Produto + "'"; Array.Resize(ref filtro, filtro.Length + 1); filtro[2].vNM_Campo = "E.ST_REGISTRO"; filtro[2].vOperador = "="; filtro[2].vVL_Busca = "'A'"; DataTable TB_Local_Amx = null;//new TCD_Movimentacao().BuscarSaldo(filtro); if ((TB_Local_Amx == null) || (TB_Local_Amx.Rows.Count == 0)) { throw new Exception("O Almoxarifado não possui SALDO suficiente!"); } else { if (val.Quantidade > Convert.ToDecimal(TB_Local_Amx.Rows[0]["Tot_Saldo"].ToString())) { throw new Exception("O Almoxarifado não possui SALDO suficiente!"); } } //BUSCA OS DADOS DE ENTREGA TpBusca[] vBusca = new TpBusca[0]; Array.Resize(ref vBusca, vBusca.Length + 1); vBusca[vBusca.Length - 1].vNM_Campo = "a.ID_Requisicao"; vBusca[vBusca.Length - 1].vOperador = "="; vBusca[vBusca.Length - 1].vVL_Busca = val.ID_Requisicao.ToString(); Array.Resize(ref vBusca, vBusca.Length + 1); vBusca[vBusca.Length - 1].vNM_Campo = "b.cd_produto"; vBusca[vBusca.Length - 1].vOperador = "="; vBusca[vBusca.Length - 1].vVL_Busca = "'" + val.CD_Produto + "'"; //InsumoEstoque.Id_LanctoEstoque = Convert.ToDecimal(new TCD_LanEntregaRequisicao().BuscarEscalar(vBusca, "b.Id_LanctoEstoque").ToString()); //InsumoEstoque.Id_Entrega = Convert.ToDecimal(new TCD_LanEntregaRequisicao().BuscarEscalar(vBusca, "a.Id_Entrega").ToString()); } if (InsumoEstoque.Id_LanctoEstoque > 0) { //MANDA GRAVAR A INSUMO val.ID_Lancto = 0; retorno = lanInsumo.GravaLanInsumos(val); InsumoEstoque.Id_Lancto = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_LANCTO")); InsumoEstoque.ID_LanctoAtiv = Convert.ToDecimal(val.ID_LanctoAtiv); //GRAVA O LANÇAMENTO INSUMO X ESTOQUE InsumoEstoque.Cd_Produto = val.CD_Produto; InsumoEstoque.Cd_Empresa = val.CD_Empresa; TCD_LanInsumos_X_Estoque TCD_InsumoEstoque = new TCD_LanInsumos_X_Estoque(); TCD_InsumoEstoque.Banco_Dados = banco; TCD_InsumoEstoque.GravaLanInsumos_X_Estoque(InsumoEstoque); } else { throw new Exception("Não foi possível lançar o estoque, por favor tente novamente!"); } if (pode_liberar) { lanInsumo.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception erro) { if (pode_liberar) { lanInsumo.Banco_Dados.RollBack_Tran(); } throw new Exception(erro.Message); } finally { if (pode_liberar) { lanInsumo.deletarBanco_Dados(); } } }
public static string DeletaLanInsumos(TRegistro_LanInsumos val, TObjetoBanco banco) { bool pode_liberar = false; TCD_LanInsumos lanInsumo = new TCD_LanInsumos(); try { if (banco == null) { lanInsumo.CriarBanco_Dados(true); pode_liberar = true; banco = lanInsumo.Banco_Dados; } else { lanInsumo.Banco_Dados = banco; } string retorno = ""; TlistLanInsumos_X_Estoque listaEstoque = TCN_LanInsumos_X_Estoque.Busca(val.CD_Empresa, val.CD_Produto, 0, Convert.ToDecimal(val.ID_Lancto), 0, Convert.ToDecimal(val.ID_LanctoAtiv)); if (listaEstoque != null && listaEstoque.Count > 0) { if (val.ID_Requisicao <= 0 || val.ID_Requisicao == null) { //GRAVA O LANÇAMENTO EM ESTOQUE TRegistro_LanEstoque reg_estoque = new TRegistro_LanEstoque(); reg_estoque.Cd_produto = val.CD_Produto; reg_estoque.Cd_local = val.CD_Local; reg_estoque.Id_lanctoestoque = listaEstoque[0].Id_LanctoEstoque; reg_estoque.Qtd_saida = val.Quantidade; reg_estoque.Cd_empresa = val.CD_Empresa; reg_estoque.St_registro = "C"; reg_estoque.Tp_movimento = "S"; TCD_LanEstoque TCD_Estoque = new TCD_LanEstoque(); TCD_Estoque.Banco_Dados = banco; string ret_estoque = TCD_Estoque.DeletaEstoque(reg_estoque); } //MANDA GRAVAR A INSUMO TRegistro_LanInsumos_X_Estoque InsumoEstoque = new TRegistro_LanInsumos_X_Estoque(); InsumoEstoque.Id_Lancto = Convert.ToDecimal(val.ID_Lancto); InsumoEstoque.ID_LanctoAtiv = Convert.ToDecimal(val.ID_LanctoAtiv); //GRAVA O LANÇAMENTO INSUMO X ESTOQUE InsumoEstoque.Cd_Produto = val.CD_Produto; InsumoEstoque.Cd_Empresa = val.CD_Empresa; InsumoEstoque.Id_LanctoEstoque = listaEstoque[0].Id_LanctoEstoque; TCD_LanInsumos_X_Estoque TCD_InsumoEstoque = new TCD_LanInsumos_X_Estoque(); TCD_InsumoEstoque.Banco_Dados = banco; TCD_InsumoEstoque.DeletaLanInsumos_X_Estoque(InsumoEstoque); retorno = lanInsumo.DeletaLanInsumos(val); } else { throw new Exception("Não foi possível remover o insumo, por favor tente novamente!"); } if (pode_liberar) { lanInsumo.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception erro) { if (pode_liberar) { lanInsumo.Banco_Dados.RollBack_Tran(); } throw new Exception(erro.Message); } finally { if (pode_liberar) { lanInsumo.deletarBanco_Dados(); } } }
public static string DeletarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco) { if (val.Cd_empresa.Trim().Equals("")) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: CD_Empresa\r\n" + "Método: DeletarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (val.Cd_produto.Trim().Equals("")) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: CD_Produto\r\n" + "Método: DeletarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (val.Id_lanctoestoque < 1) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: ID_LanctoEstoque\r\n" + "Método: DeletarEstoque\r\n" + "Classe: TCN_LanEstoque"); } string retorno = string.Empty; bool pode_liberar = false; TCD_LanEstoque qtb_estoque = new TCD_LanEstoque(); try { if (banco == null) { pode_liberar = qtb_estoque.CriarBanco_Dados(true); } else { qtb_estoque.Banco_Dados = banco; } retorno = qtb_estoque.DeletaEstoque(val); if (pode_liberar) { qtb_estoque.Banco_Dados.Commit_Tran(); } return(retorno); } catch { if (pode_liberar) { qtb_estoque.Banco_Dados.RollBack_Tran(); } return(string.Empty); } finally { if (pode_liberar) { qtb_estoque.deletarBanco_Dados(); } } }
public static string GravarEstoque(TRegistro_LanEstoque val, TObjetoBanco banco) { //Validar Campos obrigatorios para gravar estoque if (string.IsNullOrEmpty(val.Cd_empresa)) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: CD_Empresa\r\n" + "Método: GravarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (string.IsNullOrEmpty(val.Cd_produto)) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: CD_Produto\r\n" + "Método: GravarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (val.Dt_lancto.Equals(new DateTime())) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: DT_Lancto\r\n" + "Método: GravarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (string.IsNullOrEmpty(val.Tp_movimento)) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: TP_Movimento\r\n" + "Método: GravarEstoque\r\n" + "Classe: TCN_LanEstoque"); } if (string.IsNullOrEmpty(val.Tp_lancto)) { throw new Exception("Campo Obrigatorio !\r\n" + "Campo: TP_Lancto\r\n" + "Método: GravarEstoque\r\n" + "Classe: TCN_LanEstoque"); } bool pode_liberar = false; TCD_LanEstoque qtb_estoque = new TCD_LanEstoque(); try { if (banco == null) { pode_liberar = qtb_estoque.CriarBanco_Dados(true); } else { qtb_estoque.Banco_Dados = banco; } //Gravar Estoque string retorno = string.Empty; if ((!new TCD_CadProduto(qtb_estoque.Banco_Dados).ItemServico(val.Cd_produto)) && (!new TCD_CadProduto(qtb_estoque.Banco_Dados).ProdutoConsumoInterno(val.Cd_produto))) { if (val.Tp_movimento.Trim().Equals("S")) { decimal saldo = 0; if (BloquearEstoqueNegativo(val.Cd_empresa, val.Cd_produto, val.Cd_local, val.Qtd_saida, ref saldo, qtb_estoque.Banco_Dados)) { throw new Exception("Saldo insuficiente para baixar estoque do produto:\r\n" + val.Cd_produto + " - " + val.Ds_produto + "\r\n" + "No local de armazenagem: " + val.Cd_local.Trim() + "-" + val.Ds_local.Trim() + "\r\n" + "Saldo Disponivel: " + saldo.ToString("### ### ##0.000") + "\r\n" + "Saldo Requerido: " + val.Qtd_saida.ToString("### ### ##0.000") + "\r\n" + "Informe o Depto Contabil para lançamento da provisão de estoque !"); } } retorno = qtb_estoque.GravaEstoque(val); val.Id_lanctoestoque = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE")); //Gravar Lote Anvisa val.lMovLoteAnvisa.ForEach(p => { p.Id_lanctoestoque = val.Id_lanctoestoque; Faturamento.LoteAnvisa.TCN_MovLoteAnvisa.Gravar(p, qtb_estoque.Banco_Dados); }); //Gravar Grade val.lGrade.ForEach(p => TCN_GradeEstoque.Gravar(new TRegistro_GradeEstoque() { Cd_empresa = val.Cd_empresa, Cd_produto = val.Cd_produto, Id_lanctoestoque = val.Id_lanctoestoque, Id_caracteristica = p.Id_caracteristica, Id_item = p.Id_item, quantidade = p.Vl_mov }, qtb_estoque.Banco_Dados)); if (pode_liberar) { qtb_estoque.Banco_Dados.Commit_Tran(); } return(retorno); } return(string.Empty); } catch (Exception ex) { if (pode_liberar) { qtb_estoque.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar estoque: " + ex.Message.Trim()); } finally { if (pode_liberar) { qtb_estoque.deletarBanco_Dados(); } } }
public static void ProcessarInventario(Tregistro_Inventario val, TObjetoBanco banco) { bool st_transacao = false; TCD_Inventario_Item_X_Saldo qtb_saldo = new TCD_Inventario_Item_X_Saldo(); try { if (banco == null) { st_transacao = qtb_saldo.CriarBanco_Dados(true); } else { qtb_saldo.Banco_Dados = banco; } TList_Inventario_Item_X_Saldo lSaldo = TCN_Inventario_Item_X_Saldo.Buscar(val.Id_inventario.Value.ToString(), string.Empty, string.Empty, string.Empty, qtb_saldo.Banco_Dados); lSaldo.ForEach(p => { //Para produtos derivados de consumo interno //O sistema deve gerar lançamento no almoxarifado if (p.Id_Almox != null) { if (p.Qtd_saldoAmx != p.Qtd_contada) { p.Qtd_saldo = p.Qtd_saldoAmx; CamadaDados.Almoxarifado.TRegistro_Movimentacao _Movimentacao = new CamadaDados.Almoxarifado.TRegistro_Movimentacao(); _Movimentacao.Cd_empresa = p.Cd_empresa; _Movimentacao.LoginAlmoxarife = Parametros.pubLogin; _Movimentacao.Id_almoxstr = p.Id_Almox.ToString(); _Movimentacao.Cd_produto = p.Cd_produto; _Movimentacao.Dt_movimento = CamadaDados.UtilData.Data_Servidor(); if (p.Qtd_saldoAmx < p.Qtd_contada) { _Movimentacao.Tp_movimento = "E"; _Movimentacao.Quantidade = p.Qtd_contada - p.Qtd_saldoAmx; _Movimentacao.Vl_subtotal = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual); _Movimentacao.Ds_observacao = "ENTRADA DEVIDA AO INVENTÁRIO " + p.Id_inventario; } else { _Movimentacao.Tp_movimento = "S"; _Movimentacao.Quantidade = p.Qtd_saldoAmx - p.Qtd_contada; _Movimentacao.Vl_subtotal = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada); _Movimentacao.Ds_observacao = "SAÍDA DEVIDA AO INVENTÁRIO " + p.Id_inventario; } _Movimentacao.Vl_unitario = p.Vl_unitario; string retorno = CamadaNegocio.Almoxarifado.TCN_Movimentacao.Gravar(_Movimentacao, qtb_saldo.Banco_Dados); //Gravar Inventario X Almoxarifado TCN_Inventario_X_Estoque.GravarInventarioXEstoque( new TRegistro_Inventario_X_Estoque() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Id_inventario = p.Id_inventario, Id_movimentoAlmox = Convert.ToDecimal(retorno), Id_registro = p.Id_registro }, qtb_saldo.Banco_Dados); } } else { if (p.Qtd_saldoatual != p.Qtd_contada) { //Gravar no estoque TRegistro_LanEstoque regEstoque = new TRegistro_LanEstoque(); regEstoque.Cd_empresa = p.Cd_empresa; regEstoque.Cd_produto = p.Cd_produto; regEstoque.Cd_local = p.Cd_local; regEstoque.Dt_lancto = CamadaDados.UtilData.Data_Servidor(); regEstoque.St_registro = "A"; regEstoque.Tp_lancto = "I"; if (p.Qtd_saldoatual < p.Qtd_contada) { regEstoque.Tp_movimento = "E"; regEstoque.Qtd_entrada = p.Qtd_contada - p.Qtd_saldoatual; regEstoque.Vl_subtotal = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual); } else { regEstoque.Tp_movimento = "S"; regEstoque.Qtd_saida = p.Qtd_saldoatual - p.Qtd_contada; regEstoque.Vl_subtotal = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada); } regEstoque.Vl_unitario = p.Vl_unitario; string retorno = TCN_LanEstoque.GravarEstoque(regEstoque, qtb_saldo.Banco_Dados); //Gravar Inventario X Estoque TCN_Inventario_X_Estoque.GravarInventarioXEstoque( new TRegistro_Inventario_X_Estoque() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Id_inventario = p.Id_inventario, Id_registro = p.Id_registro, Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE")) }, qtb_saldo.Banco_Dados); } } if (p.Id_Almox == null && p.Qtd_saldoatual != p.Qtd_saldo) { p.Qtd_saldo = p.Qtd_saldoatual; TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados); } else { TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados); } }); //Alterar Status do Inventario para Processado val.St_inventario = "P"; GravarInventario(val, qtb_saldo.Banco_Dados); if (st_transacao) { qtb_saldo.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_saldo.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar inventario: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_saldo.deletarBanco_Dados(); } } }