public TList_Apontamento_Estoque Select(TpBusca[] vBusca, int vTop, string vNM_Campo) { TList_Apontamento_Estoque lista = new TList_Apontamento_Estoque(); bool podeFecharBco = false; if (Banco_Dados == null) { this.CriarBanco_Dados(false); podeFecharBco = true; } SqlDataReader reader = this.ExecutarBusca(this.SqlCodeBusca(vBusca, Convert.ToInt16(vTop), vNM_Campo)); try { while (reader.Read()) { TRegistro_Apontamento_Estoque reg = new TRegistro_Apontamento_Estoque(); if (!reader.IsDBNull(reader.GetOrdinal("ID_Apontamento"))) { reg.Id_apontamento = reader.GetDecimal(reader.GetOrdinal("ID_Apontamento")); } if (!reader.IsDBNull(reader.GetOrdinal("CD_Empresa"))) { reg.Cd_empresa = reader.GetString(reader.GetOrdinal("CD_Empresa")); } if (!reader.IsDBNull(reader.GetOrdinal("CD_Produto"))) { reg.Cd_produto = reader.GetString(reader.GetOrdinal("CD_Produto")); } if (!reader.IsDBNull(reader.GetOrdinal("DS_Produto"))) { reg.Ds_produto = reader.GetString(reader.GetOrdinal("DS_Produto")); } if (!reader.IsDBNull(reader.GetOrdinal("Sigla_Unidade"))) { reg.Sigla_unidade = reader.GetString(reader.GetOrdinal("Sigla_Unidade")); } if (!reader.IsDBNull(reader.GetOrdinal("ID_LanctoEstoque"))) { reg.Id_lanctoestoque = reader.GetDecimal(reader.GetOrdinal("ID_LanctoEstoque")); } if (!reader.IsDBNull(reader.GetOrdinal("QTD_Entrada"))) { reg.Qtd_entrada = reader.GetDecimal(reader.GetOrdinal("QTD_Entrada")); } if (!reader.IsDBNull(reader.GetOrdinal("QTD_Saida"))) { reg.Qtd_saida = reader.GetDecimal(reader.GetOrdinal("QTD_Saida")); } if (!reader.IsDBNull(reader.GetOrdinal("Vl_Unitario"))) { reg.Vl_unitario = reader.GetDecimal(reader.GetOrdinal("Vl_Unitario")); } if (!reader.IsDBNull(reader.GetOrdinal("Vl_SubTotal"))) { reg.Vl_subtotal = reader.GetDecimal(reader.GetOrdinal("Vl_SubTotal")); } if (!reader.IsDBNull(reader.GetOrdinal("DT_Lancto"))) { reg.Dt_lancamento = reader.GetDateTime(reader.GetOrdinal("DT_Lancto")); } if (!reader.IsDBNull(reader.GetOrdinal("CD_Local"))) { reg.Cd_local = reader.GetString(reader.GetOrdinal("CD_Local")); } if (!reader.IsDBNull(reader.GetOrdinal("DS_Local"))) { reg.Ds_local = reader.GetString(reader.GetOrdinal("DS_Local")); } if (!reader.IsDBNull(reader.GetOrdinal("Vl_CustoContabil"))) { reg.Vl_custocontabil = reader.GetDecimal(reader.GetOrdinal("Vl_CustoContabil")); } lista.Add(reg); } } finally { reader.Close(); reader.Dispose(); if (podeFecharBco) { this.deletarBanco_Dados(); } } return(lista); }
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(); } } }