예제 #1
1
        bool isArtigoConjunto(String artigo)
        {
            StdBELista tblArtigo = new StdBELista();
            bool       rv        = false;

            try
            {
                tblArtigo = BSO.Consulta("select TipoComponente from Artigo where Artigo = '" + artigo + "'");


                //alterar armazem dos artigos na linha
                if (tblArtigo.Vazia() == false)
                {
                    rv = tblArtigo.DaValor <int>("TipoComponente") == 1 ? true : false;
                }
            }
            catch (Exception err)
            {
                PSO.Dialogos.MostraErro("[Consulta Artigo]: " + err.ToString());
                rv = false;
            }



            return(rv);
        }
        internal static Dictionary <String, int> CheckPendingDocuments(ERPContext oERPContext)
        {
            Dictionary <String, int>    result         = new Dictionary <string, int>();
            Dictionary <String, String> groupCompanies = CrossCompany.Platform.GetGroupCompanies(oERPContext);

            //Exit if no companies where found
            if (groupCompanies.Count == 0)
            {
                return(result);
            }

            result.Add("Purchases", 0);
            result.Add("Sales", 0);

            //Load the documents to import from all the group companies
            groupCompanies.Remove(oERPContext.BSO.Contexto.CodEmp);
            foreach (string groupCompany in groupCompanies.Keys)
            {
                ErpBS oCompany = new ErpBS();

                oCompany.AbreEmpresaTrabalho(
                    StdBE100.StdBETipos.EnumTipoPlataforma.tpEmpresarial,
                    groupCompany,
                    Properties.Settings.Default.User,
                    Properties.Settings.Default.Password);


                String strSQL = String.Format(
                    "select sum(pur) Purchases, sum(sls) Sales " +
                    "from(" +
                    "   select count(*) pur, 0 sls from cabecdoc cd inner join CabecDocStatus cds on cds.IdCabecDoc=cd.Id left join documentosvenda dv on cd.tipodoc = dv.documento " +
                    "   where dv.cdu_exportagrupo = 1 AND cd.cdu_exportado = 0  AND cds.Anulado=0 AND cd.entidade = '{0}' " +
                    "   UNION ALL " +
                    "   select 0 pur, count(*) pur from cabeccompras cc inner join CabecComprasStatus ccs on ccs.IdCabecCompras=cc.Id left join documentoscompra dc on cc.tipodoc = dc.documento " +
                    "   where dc.cdu_exportagrupo = 1 AND isnull(cc.cdu_exportado, 0) = 0 AND ccs.Anulado=0 AND cc.entidade = '{0}' " +
                    "   ) as tmp"
                    , oERPContext.BSO.Contexto.CodEmp);

                StdBELista lstPendDocs = oCompany.Consulta(strSQL);

                if (!lstPendDocs.Vazia())
                {
                    if (lstPendDocs.DaValor <int>("Purchases") > 0)
                    {
                        result["Purchases"] += lstPendDocs.DaValor <int>("Purchases");
                    }

                    if (lstPendDocs.DaValor <int>("Sales") > 0)
                    {
                        result["Sales"] += lstPendDocs.DaValor <int>("Sales");
                    }
                }
            }

            return(result);
        }
예제 #3
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);
        }
예제 #4
0
        /// <summary>
        /// Check for available Data Model updates in resources and apply them, if any.
        /// </summary>
        /// <param name="companyObject"></param>
        private static void DataUpgrade(ref ErpBS companyObject)
        {
            try
            {
                StdBELista dbVersion = companyObject.Consulta("select Versao from VersaoModulo where Modulo = 'XME'");

                string currentVersion = dbVersion.Vazia() ? "0" : dbVersion.DaValor <String>("Versao");
                int    intVersion     = Convert.ToInt32(currentVersion) + 1;

                //Apply the upgrade scripts from resources
                string sqlUPG = Properties.Resources.ResourceManager.GetString(String.Format("UPG_{0}", intVersion.ToString()), CultureInfo.InvariantCulture);
                while (!String.IsNullOrEmpty(sqlUPG))
                {
                    companyObject.DSO.ExecuteSQL(sqlUPG);

                    intVersion += 1;
                    sqlUPG      = Properties.Resources.ResourceManager.GetString(String.Format("UPG_{0}", intVersion.ToString()), CultureInfo.InvariantCulture);
                }

                //Update the version
                intVersion -= 1;
                if (intVersion > Convert.ToInt32(currentVersion))
                {
                    string sqlQRY = string.Format("" +
                                                  "if exists(select * from VersaoModulo where Modulo = 'XME') " +
                                                  "   update VersaoModulo set Versao = '{0}' where Modulo = 'XME' " +
                                                  "else " +
                                                  "   insert into VersaoModulo(Modulo, Versao) values('XME', '{0}')"
                                                  , intVersion.ToString());

                    companyObject.DSO.ExecuteSQL(sqlQRY);
                }
            }
            catch
            {
                //Do nothing
            }
        }
예제 #5
0
        private void btnImport_Click(object sender, EventArgs e)
        {
            if (lstDocuments != null && lstDocuments.NumLinhas() > 0)
            {
                bool occurredErrors           = false;
                bool occurredSomeIntegrations = false;

                DialogResult oDialog = ERPContext.PSO.Dialogos.MostraDialogoEsperaAsync(
                    this,
                    "A processar documentos...",
                    new Action <Progress <int>, CancellationToken>((progress, cancel) =>
                {
                    int i = 0;
                    lstDocuments.Inicio();
                    while (!lstDocuments.NoFim())
                    {
                        ((IProgress <int>)progress).Report(Convert.ToInt32((decimal)i / (decimal)lstDocuments.NumLinhas() * 100));

                        if (lstDocuments.DaValor <bool>("Sel"))
                        {
                            Tuple <string, string> retValue = new Tuple <string, string>(String.Empty, String.Empty);
                            if (lstDocuments.DaValor <string>("DocType").Equals("Compra"))
                            {
                                retValue = BusinessProcesses.ImportSalesDocument(ERPContext, lstDocuments.DaValor <string>("Company"), lstDocuments.DaValor <string>("IDDoc"));
                            }
                            else if (lstDocuments.DaValor <string>("DocType").Equals("Encomenda"))
                            {
                                retValue = BusinessProcesses.ImportPurchasesDocument(ERPContext, lstDocuments.DaValor <string>("Company"), lstDocuments.DaValor <string>("IDDoc"));
                            }
                            else
                            {
                                retValue = new Tuple <string, string>(String.Empty, String.Empty);
                            }

                            if (retValue.Item1.Equals("ERRO"))
                            {
                                occurredErrors = true;
                            }
                            else
                            {
                                occurredSomeIntegrations = true;
                            }

                            SetGridText(lstDocuments.DaValor <string>("IDDoc"), retValue);
                        }

                        i++;
                        lstDocuments.Seguinte();
                    }
                }));

                // Erros
                if (occurredErrors)
                {
                    ERPContext.PSO.Dialogos.MostraMensagem(
                        StdBSTipos.TipoMsg.PRI_SimplesOk,
                        "Ocorreram erros na importação. Verifique as notas.",
                        StdBSTipos.IconId.PRI_Exclama);
                }
                else if (occurredSomeIntegrations)
                {
                    ERPContext.PSO.Dialogos.MostraMensagem(
                        StdBSTipos.TipoMsg.PRI_SimplesOk,
                        "Integração terminada com sucesso.",
                        StdBSTipos.IconId.PRI_Informativo);
                }
                else
                {
                    ERPContext.PSO.Dialogos.MostraMensagem(
                        StdBSTipos.TipoMsg.PRI_SimplesOk,
                        "Não foram efetuadas quaisquer integrações.",
                        StdBSTipos.IconId.PRI_Informativo);
                }
            }
            else
            {
                ERPContext.PSO.Dialogos.MostraMensagem(
                    StdPlatBS100.StdBSTipos.TipoMsg.PRI_SimplesOk,
                    "Não há documentos para processar.",
                    StdBSTipos.IconId.PRI_Informativo);
            }
        }
예제 #6
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);
        }