Пример #1
0
        /// <summary>
        /// Processes before the company opening.
        /// </summary>
        /// <param name="Cancel"></param>
        /// <param name="e"></param>
        public override void AntesDeAbrirEmpresa(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeAbrirEmpresa(ref Cancel, e);

            CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);
            mngr.BeforeOpenCompany(ref Cancel);
        }
Пример #2
0
        public override void ValidaLinha(int NumLinha, ExtensibilityEventArgs e)
        {
            base.ValidaLinha(NumLinha, e);

            try
            {
                //Apenas valida documentos de encomenda, de transporte ou financeiros
                if (BSO.Vendas.TabVendas.DaValorAtributo(DocumentoVenda.Tipodoc, "TipoDocumento") < 2)
                {
                    return;
                }

                //Validações dos fitofarmacêuticos
                if ((bool)(BSO.Base.Artigos.DaValorAtributo(DocumentoVenda.Linhas.GetEdita(NumLinha).Artigo, "CDU_Fitofarmaceutico") ?? false))
                {
                    //Obrigatório indicar o número de autorização de venda
                    if (string.IsNullOrEmpty(DocumentoVenda.Linhas.GetEdita(NumLinha).CamposUtil["CDU_NumeroAutorizacao"].Valor.ToString()))
                    {
                        throw new Exception("O número de autorização de venda é obrigatório nos produtos fitofarmacêuticos.");
                    }

                    //A entidade tem de ser autorizada
                    if (string.IsNullOrEmpty(DocumentoVenda.CamposUtil["CDU_NumeroOperador"].Valor.ToString()))
                    {
                        throw new Exception("Os produtos fitofarmacêuticos só podem ser vendidos a entidades autorizadas.");
                    }
                }
            }
            catch (Exception ex)
            {
                PSO.Dialogos.MostraErro(ex.Message, StdPlatBS100.StdBSTipos.IconId.PRI_Exclama);
                DocumentoVenda.Linhas.Remove(NumLinha);
            }
        }
Пример #3
0
        public override void DepoisDeGravar(string Artigo, ExtensibilityEventArgs e)
        {
            base.DepoisDeGravar(Artigo, e);

            if (Convert.ToBoolean(BSO.Base.Artigos.DaValorAtributo(Artigo, "CDU_ArtigoGrupo")))
            {
                CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);

                StdPlatBS100.StdBSDialogoEspera dlgUPD = PSO.Dialogos.MostraDialogoEspera(
                    "A actualizar o artigo nas outras empresas do grupo.",
                    0,
                    StdPlatBS100.StdBSTipos.IconId.PRI_Informativo,
                    StdPlatBS100.StdBSTipos.AnimId.PRI_AviCalculos,
                    StdPlatBS100.StdBSTipos.FormPos.PRI_Centrado);

                List <String> updatedCompanies = mngr.UpdateItem_GroupCompanies(Artigo);
                dlgUPD.Termina();

                if (updatedCompanies.Count > 0)
                {
                    PSO.Dialogos.MostraMensagem(
                        eTipo: StdPlatBS100.StdBSTipos.TipoMsg.PRI_Detalhe,
                        sMensagem: "Foram actualizados artigos nas empresas do grupo.",
                        eIcon: StdPlatBS100.StdBSTipos.IconId.PRI_Informativo,
                        sDetalhe: string.Join(",", updatedCompanies),
                        bActivaDetalhe: true);
                }
            }
        }
Пример #4
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            try
            {
                if ((bool)this.Artigo.CamposUtil["CDU_Fitofarmaceutico"].Valor)
                {
                    if (string.IsNullOrEmpty(this.Artigo.CamposUtil["CDU_FitofarmaceuticoNumAut"].Valor.ToString()))
                    {
                        throw new Exception("O número de autorização é obrigatório nos produtos fitofarmacêuticos.");
                    }

                    if (!this.Artigo.TrataLotes)
                    {
                        throw new Exception("O tratamento de lotes é obrigatório nos produtos fitofarmacêuticos.");
                    }
                }
            }
            catch (Exception ex)
            {
                PSO.Dialogos.MostraErro(ex.Message, StdPlatBS100.StdBSTipos.IconId.PRI_Exclama);
                Cancel = true;
            }
        }
        public override void AntesDeGravar(RhpBEProcessamento clsProcessamento, ExtensibilityEventArgs e)
        {
            clsProcessamento.Remuneracoes.Add(new RhpBEProcRemuneracao
            {
                Remuneracao           = "R20",
                Unidades              = 1,
                Valor                 = valorRemuneracao,
                Origem                = OrigemDados.origemVBA,
                Moeda                 = "EUR",
                AnoReferencia         = clsProcessamento.NumPeriodoProcessado,
                TipoCalculo           = tpCalculo.tpCalcValorFixo,
                ValorIntroducao       = valorRemuneracao,
                ValorIliquido         = valorRemuneracao,
                ValorIliquidoEfectivo = valorRemuneracao,
                ValorUnitario         = valorRemuneracao,
                PeriodoReferencia     = clsProcessamento.NumPeriodoProcessado,
                MesFiscalReferencia   = clsProcessamento.MesProcessamento,
                MesCalculoIRS         = clsProcessamento.MesProcessamento,
                CalculoDiferidoAtivo  = clsProcessamento.CalculoDiferidoAtivo,
                Instrumento           = clsProcessamento.Instrumento,
                Situacao              = clsProcessamento.Situacao,
                TipoVencimento        = (int)clsProcessamento.TipoProcessamento,
                IRSDomicilioFiscal    = clsProcessamento.IRSDomicilioFiscal,
                RegimeExRes           = clsProcessamento.RegimeExRes
            });

            base.AntesDeGravar(clsProcessamento, e);
        }
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            // base.AntesDeGravar(ref Cancel, e);
            obj_cabec_doc.Tipodoc      = "FA";
            obj_cabec_doc.Serie        = "2019";
            obj_cabec_doc.Moeda        = "AKZ";
            obj_cabec_doc.TipoEntidade = "C";
            obj_cabec_doc.Entidade     = "10124";
            //BSO.Comercial.VENDAS.PreencheDadosRelacionados obj_cabec_doc;

            BSO.Vendas.Documentos.PreencheDadosRelacionados(obj_cabec_doc);

            VndBELinhaDocumentoVenda obj_lin_doc = new VndBELinhaDocumentoVenda();

            obj_lin_doc.Artigo     = "01.01.047";
            obj_lin_doc.Descricao  = "Descricao do Artigo";
            obj_lin_doc.Quantidade = 2;
            obj_lin_doc.PrecUnit   = 1000;
            obj_lin_doc.Unidade    = "UN";
            obj_lin_doc.CodIva     = "0";
            obj_lin_doc.TaxaIva    = 0;
            obj_lin_doc.TipoLinha  = "10";

            obj_cabec_doc.Linhas.Insere(obj_lin_doc);

            // VndBELinhaDocumentoVenda obj_lin_doc = new VndBELinhaDocumentoVenda();
            //BSO.Comercial.VENDAS.Actualiza obj
            BSO.Vendas.Documentos.Actualiza(obj_cabec_doc);
        }
Пример #7
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            try
            {
                string str_avisos            = "";
                string numbeneficiario       = this.Funcionario.NumBeneficiario;
                bool   cdu_reembolsoImpostos = Convert.ToBoolean(this.Funcionario.CamposUtil["CDU_RembolsoImpostos"].Valor);

                if (cdu_reembolsoImpostos == true)
                {
                    str_avisos = str_avisos + "Atenção o funcionario com reembolso de impostos" + Environment.NewLine;
                }
                if (numbeneficiario.Length != 9)
                {
                    str_avisos = str_avisos + "Atenção o funcionario deve ter 9 digitos no num beneficiorio" + Environment.NewLine;
                    Cancel     = true;
                }

                if (str_avisos.Length > 0)
                {
                    PSO.Dialogos.MostraAviso(str_avisos);
                }
            }
            catch (Exception ex)
            {
                PSO.Dialogos.MostraAviso(ex.Message);
            }
        }
Пример #8
0
        public override void DepoisDeAnular(string Cliente, ExtensibilityEventArgs e)
        {
            base.DepoisDeAnular(Cliente, e);

            if (Convert.ToBoolean(BSO.Base.Clientes.DaValorAtributo(Cliente, "CDU_EntidadeGrupo")))
            {
                CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);

                StdBSDialogoEspera oDialog = PSO.Dialogos.MostraDialogoEspera(
                    "A remover o cliente das outras empresas do grupo.",
                    0,
                    StdBSTipos.IconId.PRI_Informativo,
                    StdBSTipos.AnimId.PRI_AviCalculos,
                    StdBSTipos.FormPos.PRI_Centrado);

                List <String> updatedCompanies = mngr.RemoveEntity(Cliente, "C");

                oDialog.Termina();

                if (updatedCompanies.Count > 0)
                {
                    PSO.Dialogos.MostraMensagem(
                        StdBSTipos.TipoMsg.PRI_Detalhe,
                        "Foram removidas entidades em outras empresas do grupo.",
                        StdBSTipos.IconId.PRI_Informativo,
                        String.Format("Empresas afetadas: {0}", String.Join(",", updatedCompanies)),
                        bActivaDetalhe: true);
                }
            }
        }
Пример #9
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            //PSO.Dialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimplesOk, "Não pode gravar.", StdPlatBS100.StdBSTipos.IconId.PRI_Exclama);

            //Cancel = true;
        }
Пример #10
0
        /// <summary>
        /// Create/update the extension menu structure
        /// </summary>
        /// <param name="e"></param>
        public override void DepoisDeCriarMenus(ExtensibilityEventArgs e)
        {
            base.DepoisDeCriarMenus(e);

            // Add the GROUP to the general tab
            PSO.Ribbon.CriaRibbonGroup(cBARRA_GERAL, "MULTI EMPRESA", cXMERIBBON_GROUP);
            // Create the Button.
            PSO.Ribbon.CriaRibbonButton(cBARRA_GERAL, cXMERIBBON_GROUP, cXMERIBBON_BTNIMPORT, "Importar Documentos", true, Properties.Resources.IMG_ImportDocuments);
        }
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            if (!GlobalFunctions.ValidateZipCode(DocumentoVenda.CodigoPostal))
            {
                PSO.Dialogos.MostraAviso("The zip code is invalid. A valid format must be like this '9999-999'.");
                Cancel = true;
            }
        }
Пример #12
0
        public override void TeclaPressionada(int KeyCode, int Shift, ExtensibilityEventArgs e)
        {
            base.TeclaPressionada(KeyCode, Shift, e);

            if (KeyCode == 80 && Shift == 3)
            {
                CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);
                mngr.PR_GlobalPosition("C", Cliente.Cliente);
                KeyCode = 0;
            }
        }
Пример #13
0
        /// <summary>
        /// Processes after the company opening.
        /// </summary>
        /// <param name="e"></param>
        public override void DepoisDeAbrirEmpresa(ExtensibilityEventArgs e)
        {
            base.DepoisDeAbrirEmpresa(e);

            // Check pending documents to import
            CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);
            mngr.CheckPendingDocuments();

            // Add the application menus to the Ribbon (Tab GERAL)
            StdBSPRibbon RibbonEvents = PSO.Ribbon;

            RibbonEvents.Executa += RibbonEvents_Executa;
        }
Пример #14
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            //string avisos = string.Empty;

            //// Valida se todas as linhas têm os mesmos valores na FonteCBL, ClasseEconomica e Organica para cabimentação
            //if (Globals.globalFunctions.DocSujeitoCabimentacao(DocumentoCompra.Tipodoc))
            //{
            //    if (!Globals.globalFunctions.DocElegivelCabimentacao(DocumentoCompra, ref avisos))
            //    {
            //        string msg = string.Format("O documento {0} está sujeito a cabimentação mas existem condições que o impedem!", this.DocumentoCompra.Tipodoc) + Environment.NewLine + "Continuar com a gravação do documento?";
            //        Cancel = (PSO.Dialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimNao, msg, StdPlatBS100.StdBSTipos.IconId.PRI_Questiona, avisos, 1, !string.IsNullOrWhiteSpace(avisos)) == StdPlatBS100.StdBSTipos.ResultMsg.PRI_Nao);
            //    }
            //}
        }
Пример #15
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            CmpBEDocumentoCompra Linha = new CmpBEDocumentoCompra();

            if ((BSO.Base.ArtigosFornecedores.Existe(strArtigo: "A0001", strFornecedor: "DANIEL")))

            {
                PSO.Dialogos.MostraDialogoEspera("Continuar com a gravacao do documento");

                if (Cancel == false)
                {
                    PSO.Dialogos.MostraDialogoEspera("Todas as operacoes deve ser cancelada");
                }
            }
        }
        public override void TeclaPressionada(int KeyCode, int Shift, ExtensibilityEventArgs e)
        {
            base.TeclaPressionada(KeyCode, Shift, e);

            if (KeyCode == 80 && Shift == 3)
            {
                CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);

                if (DocumentoInterno.TipoEntidade == "F")
                {
                    mngr.PR_GlobalPosition("F", DocumentoInterno.Entidade);
                }
                else if (DocumentoInterno.TipoEntidade == "C")
                {
                    mngr.PR_GlobalPosition("C", DocumentoInterno.Entidade);
                }
                KeyCode = 0;
            }
        }
Пример #17
0
        public override void AntesDeGravar(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeGravar(ref Cancel, e);

            try
            {
                if ((bool)this.Cliente.CamposUtil["CDU_OperadorFitofarmaceuticos"].Valor)
                {
                    if (string.IsNullOrEmpty(this.Cliente.CamposUtil["CDU_FitofarmaceuticoNumero"].Valor.ToString()))
                    {
                        throw new Exception("O número de autorização ou de aplicador é obrigatório nos operadores de fitofarmacêuticos.");
                    }
                }
            }
            catch (Exception ex)
            {
                PSO.Dialogos.MostraErro(ex.Message, StdPlatBS100.StdBSTipos.IconId.PRI_Exclama);
                Cancel = true;
            }
        }
Пример #18
0
        public override void DepoisDeGravar(VndBEDocumentoVenda clsDocumentoVenda,
                                            ref string strAvisos,
                                            ref string IdDocLiqRet,
                                            ref string IdDocLiqRetGar,
                                            ExtensibilityEventArgs e)
        {
            try
            {
                const string outputPdf   = @"C:\temp\invoice.pdf";
                const string emailAdress = @" -- INSERT A VALID EMAIL WHERE -- ";

                PrintPdfAndEmailDocument(clsDocumentoVenda, outputPdf, emailAdress);
            }
            catch (Exception ex)
            {
                throw new Exception("Cannot send the email to the customer. \n" + ex.Message);
            }
            finally
            {
                base.DepoisDeGravar(clsDocumentoVenda, ref strAvisos, ref IdDocLiqRet, ref IdDocLiqRetGar, e);
            }
        }
Пример #19
0
        public override void ClienteIdentificado(string Cliente, ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.ClienteIdentificado(Cliente, ref Cancel, e);

            CrossCompany.Manager mngr = new CrossCompany.Manager(PSO, BSO);
            List <String>        companiesCreditExceeded = mngr.PR_CreditLimitExceeded(Cliente);

            if (companiesCreditExceeded.Count > 0)
            {
                if (BSO.Contexto.ObjUtilizador.Administrador)
                {
                    PSO.Dialogos.MostraMensagem(
                        StdPlatBS100.StdBSTipos.TipoMsg.PRI_Detalhe,
                        "O cliente tem o crédito bloqueado ou excedido no grupo.",
                        StdPlatBS100.StdBSTipos.IconId.PRI_Informativo,
                        String.Format("Empresas com situação bloqueada: {0}. O utilizador {1} pode prosseguir por ter perfil de administrador.",
                                      string.Join(",", companiesCreditExceeded),
                                      BSO.Contexto.ObjUtilizador.Nome));
                }
                else
                {
                    Cancel = true;
                    if (PSO.Dialogos.MostraMensagem(
                            StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimNao,
                            String.Format("O cliente tem o crédito bloqueado/excedido nas seguintes empresas: {0}. Activar PIN de desbloqueio?", string.Join(",", companiesCreditExceeded)),
                            StdPlatBS100.StdBSTipos.IconId.PRI_Questiona) == StdPlatBS100.StdBSTipos.ResultMsg.PRI_Sim)
                    {
                        Cancel = false;
                        if (!mngr.PLT_CheckPassword(Properties.Settings.Default.UnlockPIN))
                        {
                            Cancel = true;
                            PSO.Dialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimplesOk, "PIN inválido!", StdPlatBS100.StdBSTipos.IconId.PRI_Critico);
                        }
                    }
                }
            }
        }
        public override void ArtigoIdentificado(string Artigo, int NumLinha, ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.ArtigoIdentificado(Artigo, NumLinha, ref Cancel, e);

            if (Artigo == "A0001")
            {
                //PreencheBEO
                this.RefreshContext();

                this.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao = "Linha Alterada";

                //MostraBEO
                this.CommitContext();
            }
        }
 public override void DepoisDeGravar(RhpBEProcessamento clsProcessamento, ExtensibilityEventArgs e)
 {
     Debug.Print("DepoisDeGravar");
 }
Пример #22
0
        public override void DepoisDeGravar(CmpBEDocumentoCompra clsDocCompra, ref string strAvisos, ref string IdDocLiqRet, ref string IdDocLiqRetGar, ExtensibilityEventArgs e)
        {
            //if (Globals.globalFunctions.DocSujeitoCabimentacao(clsDocCompra.Tipodoc))
            //{
            //    // Regista documento para cabimentação
            //    if (Globals.globalFunctions.DocElegivelCabimentacao(clsDocCompra))
            //    {
            //        RegistaParaCabimentacao(clsDocCompra, ref strAvisos);
            //    }
            //}

            RegistaParaCabimentacao(clsDocCompra, ref strAvisos);
        }
Пример #23
0
 public override void AntesDeAbrirEmpresa(ref bool Cancel, ExtensibilityEventArgs e)
 {
     // Activate the log after the application start's.
     BSO.Extensibility.Logger = new MyLog(true, PSO.Dialogos);
 }
Пример #24
0
        public override void ValidaLinha(int NumLinha, ExtensibilityEventArgs e)
        {
            StdBELista tblArtigoMoeda  = new StdBELista();
            string     artigoLinha     = "";
            string     armazemSugestao = "";
            string     localSugestao   = "";

            bool       calcula      = false;
            StdBELista tblArtigo    = new StdBELista();
            StdBELista tblDocumento = new StdBELista();

            linha = this.DocumentoVenda.Linhas.GetEdita(NumLinha);



            try
            {
                documento    = this.DocumentoVenda.Tipodoc;
                tblDocumento = BSO.Consulta("select ArmazemSugestao, LocalSugestao from SeriesVendas where TipoDoc = '" + documento + "'");


                //alterar armazem dos artigos na linha
                if (tblDocumento.Vazia() == false)
                {
                    armazemSugestao = tblDocumento.DaValor <string>("ArmazemSugestao");
                    localSugestao   = tblDocumento.DaValor <string>("LocalSugestao");


                    string linhaval = linha.Armazem;
                    quantidade = linha.Quantidade;
                    if (armazemSugestao.Length > 0)
                    {
                        linha.Armazem     = armazemSugestao;
                        linha.Localizacao = localSugestao;
                    }
                }
            }
            catch (Exception err)
            {
                PSO.Dialogos.MostraErro("[Consulta Documento]: " + err.ToString());
            }

            try
            {
                cliente        = this.DocumentoVenda.Entidade;
                artigoLinha    = linha.Artigo;
                tblArtigo      = BSO.Consulta("select * from Artigo where Artigo = '" + artigoLinha + "'");
                calcula        = (bool)tblArtigo.Valor("CDU_Calculo");
                tblArtigoMoeda = BSO.Consulta("select * from ArtigoMoeda where Artigo = '" + artigoLinha + "'");
            }
            catch (Exception err)
            {
                PSO.Dialogos.MostraErro("[Consulta Artigo e ArtigoMoeda]: " + err.ToString());
            }



            StdBELista tblDesconto = null;
            float      descValor   = 0;

            if (tblArtigoMoeda != null)
            {
                pvp1 = tblArtigoMoeda.DaValor <float>("PVP1");

                float precBase = float.Parse(linha.CamposUtil["CDU_PrecBase"].Valor.ToString());
                if (precBase == 0 || precBase == pvp1)
                {
                    linha.CamposUtil["CDU_PrecBase"].Valor = pvp1;
                }
            }


            if (tblArtigo != null)
            {
                if (calcula == true)
                {
                    artigo = artigoLinha;

                    try
                    {
                        tblDesconto = BSO.Consulta("select * from TDU_DescCliente where CDU_Cliente = '" + cliente + "' and CDU_Artigo = '" + artigo + "'");
                        if (tblDesconto.Vazia() == false)
                        {
                            descValor = tblDesconto.DaValor <float>("CDU_Desconto");
                        }
                        else
                        {
                            descValor = 0;
                        }
                    }
                    catch (Exception err)
                    {
                        tblDesconto = null;
                        descValor   = 0;
                        PSO.Dialogos.MostraErro("[Consulta Desconto cliente]: " + err.ToString());
                    }



                    if (tblDesconto != null)
                    {
                        float linhaval = float.Parse(linha.CamposUtil["CDU_DescVal"].Valor.ToString());
                        if (linhaval == 0 || linhaval == descValor)
                        {
                            linha.CamposUtil["CDU_DescVal"].Valor = descValor;
                        }
                    }

                    getLinhaValores(NumLinha);

                    linha.PrecUnit = pbase - desconto - comp;
                }
            }

            int size = this.DocumentoVenda.Linhas.NumItens;


            for (int x = 0; x < lista_artigo.Count; x++)
            {
                ArtigoConjunto a = lista_artigo[x];


                if (NumLinha >= a.linha_inicial && NumLinha <= a.linha_final)
                {
                    if (size >= a.linha_final)
                    {
                        for (int i = a.linha_inicial; i <= a.linha_final; i++)
                        {
                            artigoLinha = DocumentoVenda.Linhas.GetEdita(i).Artigo;
                            DocumentoVenda.Linhas.GetEdita(i).Quantidade = quantidade;
                        }
                    }
                }
            }


            base.ValidaLinha(NumLinha, e);
        }
Пример #25
0
        public override void ClienteIdentificado(string Cliente, ref bool Cancel, ExtensibilityEventArgs e)
        {
            lista_artigo.Clear();

            base.ClienteIdentificado(Cliente, ref Cancel, e);
        }
Пример #26
0
 public override void DepoisDeGravar(string Filial, string Tipo, string Serie, int NumDoc, ExtensibilityEventArgs e)
 {
     lista_artigo.Clear();
     base.DepoisDeGravar(Filial, Tipo, Serie, NumDoc, e);
 }
Пример #27
0
 //Limpar a lista de artigos depois e antes da venda
 public override void TipoDocumentoIdentificado(string Tipo, ref bool Cancel, ExtensibilityEventArgs e)
 {
     lista_artigo.Clear();
     base.TipoDocumentoIdentificado(Tipo, ref Cancel, e);
 }
Пример #28
0
        public override void ArtigoIdentificado(string Artigo, int NumLinha, ref bool Cancel, ExtensibilityEventArgs e)
        {
            bool inserido = false;

            for (int i = 0; i < lista_artigo.Count; i++)
            {
                if (lista_artigo[i].artigo == Artigo)
                {
                    inserido = true;
                    PSO.Dialogos.MostraAviso("O Artigo " + Artigo + " Ja foi inserido!");
                    Cancel = true;
                }
            }

            if (inserido == false)
            {
                if (isArtigoConjunto(Artigo) == true)
                {
                    artigo_conjunto               = new ArtigoConjunto();;
                    artigo_conjunto.artigo        = Artigo;
                    artigo_conjunto.descricao     = this.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao;
                    artigo_conjunto.linha_inicial = NumLinha;
                    StdBELista tblArtigo = new StdBELista();

                    try
                    {
                        tblArtigo = BSO.Consulta("select count(*) as total from ComponentesArtigos  where ArtigoComposto =  '" + Artigo + "'");


                        //alterar armazem dos artigos na linha
                        if (tblArtigo.Vazia() == false)
                        {
                            artigo_conjunto.total_linha = tblArtigo.DaValor <int>("total");
                            artigo_conjunto.linha_final = artigo_conjunto.linha_inicial + artigo_conjunto.total_linha;
                            lista_artigo.Add(artigo_conjunto);
                        }
                    }
                    catch (Exception err)
                    {
                        PSO.Dialogos.MostraErro("[ArtigoIdentificado]: " + err.ToString());
                    }
                }
            }
            base.ArtigoIdentificado(Artigo, NumLinha, ref Cancel, e);
        }
Пример #29
0
        public override void AntesDeIntegrarCBL(ref bool Cancel, ExtensibilityEventArgs e)
        {
            base.AntesDeIntegrarCBL(ref Cancel, e);

            PSO.Dialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimplesOk, "AntesDeIntegrarCBL", StdPlatBS100.StdBSTipos.IconId.PRI_Informativo);
        }
Пример #30
0
        public override void ValidaLinha(int NumLinha, ExtensibilityEventArgs e)
        {
            base.ValidaLinha(NumLinha, e);

            try
            {
                //Apenas valida documentos financeiros ou de transporte
                if ((BSO.Compras.TabCompras.DaValorAtributo(DocumentoCompra.Tipodoc, "TipoDocumento") < 3))
                {
                    return;
                }

                //Validações dos fitofarmacêuticos
                if ((bool)(BSO.Base.Artigos.DaValorAtributo(DocumentoCompra.Linhas.GetEdita(NumLinha).Artigo, "CDU_Fitofarmaceutico")))
                {
                    //Obrigatório indicar o número de autorização de venda
                    if (string.IsNullOrEmpty(DocumentoCompra.Linhas.GetEdita(NumLinha).CamposUtil["CDU_NumeroAutorizacao"].Valor.ToString()))
                    {
                        throw new Exception("O número de autorização de venda é obrigatório nos produtos fitofarmacêuticos.");
                    }

                    //Obrigatório indicar o lote
                    if (DocumentoCompra.Linhas.GetEdita(NumLinha).Lote.Equals("<L01>") || string.IsNullOrEmpty(DocumentoCompra.Linhas.GetEdita(NumLinha).Lote))
                    {
                        throw new Exception("É obrigatório indicar o lote dos produtos fitofarmacêuticos.");
                    }

                    //A compra a entidades não autorizadas implica a identificação do armazém origem
                    //O armazém origem tem de pertencer ao fornecedor
                    if (!(bool)(BSO.Base.Fornecedores.DaValorAtributo(DocumentoCompra.Entidade, "CDU_OperadorFitofarmaceuticos") ?? false))
                    {
                        //Se não foi definido nenhum armazém de proveniencia associa o primeiro do fornecedor (caso exista)
                        if (string.IsNullOrEmpty((DocumentoCompra.Linhas.GetEdita(NumLinha).CamposUtil["CDU_ArmazemProveniencia"].Valor ?? string.Empty).ToString()))
                        {
                            StdBELista LstArmProveniencia = BSO.Consulta(string.Format("select top(1) [CDU_Codigo] from TDU_ArmazensProveniencia where [CDU_CodFornecedor] = '{0}'", DocumentoCompra.Entidade));
                            if (!LstArmProveniencia.Vazia())
                            {
                                DocumentoCompra.Linhas.GetEdita(NumLinha).CamposUtil["CDU_ArmazemProveniencia"].Valor = LstArmProveniencia.Valor("CDU_Codigo");
                            }
                            else
                            {
                                throw new Exception("Não existe nenhum armazém de proveniência associado a este fornecedor. A compra de produtos fitofarmacêuticos a entidades isentas de autorização implica a identificação do armazém de proveniência.");
                            }
                        }

                        //Valida se o armazém de proveniência pertence ao fornecedor
                        StdBECamposChave objCampoChave = new StdBECamposChave();
                        objCampoChave.AddCampoChave("CDU_Codigo", DocumentoCompra.Linhas.GetEdita(NumLinha).CamposUtil["CDU_ArmazemProveniencia"].Valor);

                        if (!BSO.TabelasUtilizador.DaValorAtributo("TDU_ArmazensProveniencia", objCampoChave, "CDU_CodFornecedor").Equals(DocumentoCompra.Entidade))
                        {
                            throw new Exception("O armazém de proveniência não pertence à entidade do documento.");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                PSO.Dialogos.MostraErro(ex.Message, StdPlatBS100.StdBSTipos.IconId.PRI_Exclama);
                DocumentoCompra.Linhas.Remove(NumLinha);
            }
        }