/// <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); }
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); } }
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); } } }
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); }
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); } }
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); } } }
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; }
/// <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; } }
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; } }
/// <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; }
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); // } //} }
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; } }
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; } }
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); } }
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"); }
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); }
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); }
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); }
public override void ClienteIdentificado(string Cliente, ref bool Cancel, ExtensibilityEventArgs e) { lista_artigo.Clear(); base.ClienteIdentificado(Cliente, ref Cancel, e); }
public override void DepoisDeGravar(string Filial, string Tipo, string Serie, int NumDoc, ExtensibilityEventArgs e) { lista_artigo.Clear(); base.DepoisDeGravar(Filial, Tipo, Serie, NumDoc, e); }
//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); }
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); }
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); }
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); } }