예제 #1
0
        public static string Excluir(TRegistro_SerieProduto val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_SerieProduto qtb_ordem    = new TCD_SerieProduto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ordem.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ordem.Banco_Dados = banco;
                }
                //Cancelar
                val.St_registro = "C";
                qtb_ordem.Gravar(val);
                if (st_transacao)
                {
                    qtb_ordem.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ordem.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir Nº Série: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ordem.deletarBanco_Dados();
                }
            }
        }
예제 #2
0
        public static string Gravar(TRegistro_SerieProduto val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_SerieProduto qtb_ordem    = new TCD_SerieProduto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ordem.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ordem.Banco_Dados = banco;
                }
                //Gravar Nº Série
                val.Id_serie = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_ordem.Gravar(val), "@P_ID_SERIE"));
                if (st_transacao)
                {
                    qtb_ordem.Banco_Dados.Commit_Tran();
                }
                return(val.Id_seriestr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ordem.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar Nº Série: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ordem.deletarBanco_Dados();
                }
            }
        }
예제 #3
0
        public static string Gravar(TRegistro_ApontamentoProducao val,
                                    BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_ApontamentoProducao qtb_apontamento = new TCD_ApontamentoProducao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_apontamento.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_apontamento.Banco_Dados = banco;
                }
                if (val.LFormulaApontamento.Count < 1)
                {
                    throw new Exception("Erro: Não existe formula apontamento para processar apontamento produção.");
                }
                //Verificar custo fixo
                string moeda_padrao = TCN_CadParamGer.BuscaVL_String_Empresa("CD_MOEDA_PADRAO", val.Cd_empresa, qtb_apontamento.Banco_Dados);
                if (moeda_padrao.Trim().Equals(string.Empty))
                {
                    throw new Exception("Erro gravar apontamento produção: falta configurar moeda padrão para realizar calculo do custo fixo.");
                }
                //Gravar apontamento producao
                val.St_registro    = "1";
                val.Id_apontamento = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_apontamento.Gravar(val), "@P_ID_APONTAMENTO"));
                List <TRegistro_CustoFixo_Direto> lCustoMoeda = val.LFormulaApontamento[0].LCustoFixo.FindAll(p => p.Cd_moeda.Trim() != moeda_padrao.Trim());
                lCustoMoeda.ForEach(p =>
                {
                    //Verificar se existe cotacao para este custo
                    object obj = new TCD_CotacaoMoeda(qtb_apontamento.Banco_Dados).BuscarEscalar(
                        new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = "a.cd_moeda",
                            vOperador = "=",
                            vVL_Busca = "'" + p.Cd_moeda.Trim() + "'"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.cd_moedaresult",
                            vOperador = "=",
                            vVL_Busca = "'" + moeda_padrao.Trim() + "'"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.data",
                            vOperador = "=",
                            vVL_Busca = "'" + string.Format(new System.Globalization.CultureInfo("en-US", true), Convert.ToDateTime(val.Dt_apontamento.Value).ToString("yyyyMMdd")) + "'"
                        }
                    }, "1");
                    if (obj != null)
                    {
                        if (!obj.ToString().Equals("1"))
                        {
                            throw new Exception("Erro gravar apontamento produção: Não existe cotação para a moeda de origem " + p.Cd_moeda.Trim() + ", \r\n" +
                                                "moeda de destino " + moeda_padrao.Trim() + ", data de cotação " + val.Dt_apontamentostr.Trim());
                        }
                    }
                    else
                    {
                        throw new Exception("Erro gravar apontamento produção: Não existe cotação para a moeda de origem " + p.Cd_moeda.Trim() + ", \r\n" +
                                            "moeda de destino " + moeda_padrao.Trim() + ", data de cotação " + val.Dt_apontamentostr.Trim());
                    }
                });
                CalcularCustoMPD(val, qtb_apontamento.Banco_Dados);
                //Processar estoque produto acabado
                ProcessarEstoqueProdutoAcabado(val, val.Qtd_batch, val.Vl_custo_mpd, qtb_apontamento.Banco_Dados);
                //Processar estoque materia-prima
                TCN_FichaTec_MPrima.ProcessarEstoqueFichaTec_MPrima(val.LFormulaApontamento[0].LFichaTec_MPrima,
                                                                    val.Qtd_batch,
                                                                    val.Dt_apontamento,
                                                                    val.LFormulaApontamento[0].St_decomposicao,
                                                                    qtb_apontamento.Banco_Dados).ForEach(p => val.LApontamentoEstoque.Add(p));
                //Gravar apontamento X Estoque
                val.LApontamentoEstoque.ForEach(p =>
                {
                    p.Id_apontamento = val.Id_apontamento;
                    TCN_Apontamento_Estoque.GravarApontamentoEstoque(p, qtb_apontamento.Banco_Dados);
                });


                //Gravar apontamento X Custo Fixo
                val.LFormulaApontamento[0].LCustoFixo.ForEach(p =>
                {
                    TCN_Apontamento_CustoFixo.GravarApontamentoCustoFixo(
                        new TRegistro_Apontamento_CustoFixo()
                    {
                        Id_apontamento   = val.Id_apontamento,
                        Id_custo         = p.Id_custo,
                        Vl_custo         = p.Vl_custo_calculado,
                        Indice_monetario = p.Indice_monetario
                    }, qtb_apontamento.Banco_Dados);
                });
                //Gravar Formula Materia Prima
                val.LFormulaApontamento[0].LFichaTec_MPrima.ForEach(p =>
                                                                    TCN_Apontamento_MPrima.Gravar(new TRegistro_Apontamento_MPrima()
                {
                    Id_apontamento       = val.Id_apontamento.HasValue ? val.Id_apontamento.Value : decimal.Zero,
                    Id_mprima            = decimal.Zero,
                    Cd_produto           = p.Cd_produto,
                    Cd_unidade           = p.Cd_unidade,
                    Cd_local             = p.Cd_local,
                    Qtd_produto          = p.Qtd_produto,
                    Pc_quebratec         = p.Pc_quebra_tec,
                    Id_apontamentomprima = p.Id_apontamentomprima
                }, qtb_apontamento.Banco_Dados));
                if (val.Id_ordem != null)
                {
                    //Gravar Apontamento X Ordem de Producao
                    TCN_OrdemProducao_X_Apontamento.Gravar(
                        new TRegistro_OrdemProducao_X_Apontamento()
                    {
                        Id_apontamento = val.Id_apontamento,
                        Id_ordem       = val.Id_ordem
                    }, qtb_apontamento.Banco_Dados);
                }
                //Gravar Mov Rastreabilidade
                val.lMov.ForEach(p =>
                {
                    p.Cd_empresa     = val.Cd_empresa;
                    p.Id_apontamento = val.Id_apontamento;
                    TCN_MovRastreabilidade.Gravar(p, qtb_apontamento.Banco_Dados);
                });
                if (val.Id_ordem.HasValue)
                {
                    //Buscar Nº Série
                    TList_SerieProduto lSerie =
                        new TCD_SerieProduto(qtb_apontamento.Banco_Dados).Select(
                            new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = "a.cd_empresa",
                            vOperador = "=",
                            vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.id_ordem",
                            vOperador = "=",
                            vVL_Busca = val.Id_ordemstr
                        }
                    }, 0, string.Empty);
                    //Processar Numero se Serie
                    if (lSerie.Count > 0)
                    {
                        lSerie.ForEach(p =>
                        {
                            p.St_registro = "P";
                            TCN_SerieProduto.Gravar(p, qtb_apontamento.Banco_Dados);
                        });
                    }
                }
                if (st_transacao)
                {
                    qtb_apontamento.Banco_Dados.Commit_Tran();
                }
                return(val.Id_apontamentostr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_apontamento.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_apontamento.deletarBanco_Dados();
                }
            }
        }
예제 #4
0
 private void bbProduzir_Click(object sender, EventArgs e)
 {
     if (bsOrdemProduzir.Current != null)
     {
         if ((bsOrdemProduzir.Current as TRegistro_OrdemProducao).St_registro.Trim().ToUpper() != "A")
         {
             MessageBox.Show("Permitido INICIAR PRODUÇÃO somente de ordem com status ABERTA.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         try
         {
             bool st_serie = CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("GERAR_SERIE_APONTAMENTO",
                                                                                  (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_empresa, null).Equals("S") &&
                             new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar(
                 new Utils.TpBusca[]
             {
                 new Utils.TpBusca {
                     vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_produto.Trim() + "'"
                 },
                 new Utils.TpBusca {
                     vNM_Campo = "isnull(a.st_exigirserie, 'N')", vOperador = "=", vVL_Busca = "'S'"
                 }
             }, "1") != null;
             if (st_serie)
             {
                 using (TFSerieProduto fSerie = new TFSerieProduto())
                 {
                     object obj = new TCD_SerieProduto().BuscarEscalar(
                         new Utils.TpBusca[]
                     {
                         new Utils.TpBusca()
                         {
                             vNM_Campo = "ISNUMERIC(a.nr_serie)",
                             vOperador = "=",
                             vVL_Busca = "1"
                         }
                     }, "max(nr_serie)");
                     decimal numeroserie = decimal.Zero;
                     try
                     {
                         if (obj == null ? false : !string.IsNullOrEmpty(obj.ToString()))
                         {
                             numeroserie = decimal.Parse(obj.ToString());
                         }
                         for (int i = 0; (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Qtd_saldoproduzir > i; i++)
                         {
                             fSerie.lSerie.Add(new TRegistro_SerieProduto()
                             {
                                 Cd_empresa = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_empresa,
                                 Cd_produto = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_produto,
                                 Ds_produto = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Ds_produto,
                                 Nr_serie   = (numeroserie += 1).ToString()
                             });
                         }
                     }
                     catch
                     {
                         fSerie.lSerie.Add(
                             new TRegistro_SerieProduto
                         {
                             Cd_empresa = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_empresa,
                             Cd_produto = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Cd_produto,
                             Ds_produto = (bsOrdemProduzir.Current as TRegistro_OrdemProducao).Ds_produto
                         });
                     }
                     if (fSerie.ShowDialog() == DialogResult.OK)
                     {
                         if (fSerie.lSerie != null)
                         {
                             if (fSerie.lSerie.Count > 0)
                             {
                                 (bsOrdemProduzir.Current as TRegistro_OrdemProducao).lSerie = fSerie.lSerie;
                             }
                         }
                     }
                     else
                     {
                         MessageBox.Show("Obrigatório informar Nº Série!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         return;
                     }
                 }
             }
             TCN_OrdemProducao.IniciarProducao(bsOrdemProduzir.Current as TRegistro_OrdemProducao, null);
             if (st_serie)
             {
                 ImprimirFichaProducao();
             }
             bbBuscarOrdem_Click(this, new EventArgs());
         }
         catch (Exception ex)
         {
             bbBuscarOrdem_Click(this, new EventArgs());
             MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
예제 #5
0
 private void IniciarProducao()
 {
     if (bsOrdemProducao.Current != null)
     {
         if ((bsOrdemProducao.Current as TRegistro_OrdemProducao).St_registro.Trim().ToUpper() != "A")
         {
             MessageBox.Show("Permitido INICIAR PRODUÇÃO somente de ordem com status ABERTA.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         try
         {
             bool st_serie = CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("GERAR_SERIE_APONTAMENTO",
                                                                                  (bsOrdemProducao.Current as TRegistro_OrdemProducao).Cd_empresa, null).Equals("S");
             if (st_serie)
             {
                 using (TFSerieProduto fSerie = new TFSerieProduto())
                 {
                     object obj = new TCD_SerieProduto().BuscarEscalar(
                         new Utils.TpBusca[]
                     {
                         new Utils.TpBusca()
                         {
                             vNM_Campo = "a.Nr_serie",
                             vOperador = "<>",
                             vVL_Busca = "SEM SÉRIE"
                         }
                     }, "max(nr_serie)");
                     decimal numeroserie = decimal.Zero;
                     if (obj == null ? false : !string.IsNullOrEmpty(obj.ToString()))
                     {
                         numeroserie = decimal.Parse(obj.ToString());
                     }
                     for (int i = 0; (bsOrdemProducao.Current as TRegistro_OrdemProducao).Qtd_saldoproduzir > i; i++)
                     {
                         fSerie.lSerie.Add(new TRegistro_SerieProduto()
                         {
                             Cd_empresa = (bsOrdemProducao.Current as TRegistro_OrdemProducao).Cd_empresa,
                             Cd_produto = (bsOrdemProducao.Current as TRegistro_OrdemProducao).Cd_produto,
                             Ds_produto = (bsOrdemProducao.Current as TRegistro_OrdemProducao).Ds_produto,
                             Nr_serie   = (numeroserie += 1).ToString()
                         });
                     }
                     if (fSerie.ShowDialog() == DialogResult.OK)
                     {
                         if (fSerie.lSerie != null)
                         {
                             if (fSerie.lSerie.Count > 0)
                             {
                                 (bsOrdemProducao.Current as TRegistro_OrdemProducao).lSerie = fSerie.lSerie;
                             }
                         }
                     }
                     else
                     {
                         MessageBox.Show("Obrigatório informar Nº Série!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         return;
                     }
                 }
             }
             TCN_OrdemProducao.IniciarProducao(bsOrdemProducao.Current as TRegistro_OrdemProducao, null);
             if (st_serie)
             {
                 TCN_OrdemProducao.GerarExcel(bsOrdemProducao.Current as TRegistro_OrdemProducao);
             }
             MessageBox.Show("Ordem Produção iniciada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
             afterBusca();
         }
         catch (Exception ex)
         { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
     }
 }