Example #1
0
        public override long loadFromDB(string key, UserObjectFactory oFactory)
        {
            long ret = 0;

            try
            {
                DBFacade db = DBFacade.getInstance();

                //busca os estagios
                Recordset rs = db.Query(
                    "SELECT APST.Code " +
                    "FROM [@SB1_APPROVAL] APRV " +
                    "INNER JOIN [@SB1_APPROVAL_STAGE] APST " +
                    "ON APRV.Code = APST.U_ApprovalCode " +
                    "WHERE APRV.Code = " + key
                    );
                while (!rs.EoF)
                {
                    ApprovalStage aps = new ApprovalStage();
                    aps.loadFromDB((string)rs.Fields.Item("Code").Value, oFactory);
                    stages.AddLast(new LinkedListNode <ApprovalStage>(aps));
                    rs.MoveNext();
                }


                //busca as condicoes
                rs = db.Query(
                    "SELECT APCD.Code " +
                    "FROM [@SB1_APPROVAL] APRV " +
                    "INNER JOIN [@SB1_APPROVAL_CONDITION] APCD " +
                    "ON APRV.Code = APCD.U_ApprovalCode " +
                    "WHERE APRV.Code =  " + key
                    );
                while (!rs.EoF)
                {
                    ApprovalCondition ac = new ApprovalCondition();
                    ac.loadFromDB((string)rs.Fields.Item("Code").Value, oFactory);
                    conditions.AddLast(new LinkedListNode <ApprovalCondition>(ac));
                    rs.MoveNext();
                }

                long r = base.loadFromDB(key, oFactory);
                isActive = (string)userTable.UserFields.Fields.Item("U_isActive").Value;
            }
            catch (Exception e)
            {
                ret = -1;
            }

            return(ret);
        }
Example #2
0
        public void removeBusinessPartners(string filter)
        {
            try
            {
                string query = "select CardCode FROM OCRD";

                if (filter.Length > 0)
                {
                    query += " WHERE " + filter;
                }


                Recordset rs       = dbFacade.Query(query);
                int       countRem = 0;

                if (rs.RecordCount > 0)
                {
                    int opt = uiUtils.MessageBox("Poderão ser removidos " + rs.RecordCount + " Parceiros de Negócio. Tem certeza que deseja continuar?", 1, "Remover", "Cancelar");

                    if (opt == 1)
                    {
                        //Start the progress bar
                        ProgressBar      oProgBar = connection.App.StatusBar.CreateProgressBar("Progress Bar", rs.RecordCount, true);
                        BusinessPartners bp       = connection.Company.GetBusinessObject(BoObjectTypes.oBusinessPartners);


                        while (!rs.EoF)
                        {
                            bp.GetByKey(rs.Fields.Item("CardCode").Value);
                            string remText = bp.CardCode + " - " + bp.CardName;
                            int    rem     = bp.Remove();
                            //vai para o proximo registro
                            rs.MoveNext();

                            if (rem == 0)
                            {
                                countRem++;
                                Logger.getInstance().log("Remoção de BP: Removido: " + remText, Logger.LogType.INFO, null, false);
                                oProgBar.Text = "Removido: " + remText;
                                //avanca a progress bar
                                oProgBar.Value += 1;
                            }
                            else
                            {
                                remText += " Não pode ser removido: " + connection.Company.GetLastErrorCode() + " - " + connection.Company.GetLastErrorDescription();
                                Logger.getInstance().log("Remoção de BP: " + remText, Logger.LogType.WARNING, null, false);
                            }
                        }

                        oProgBar.Stop();

                        uiUtils.MessageBox("Foram Removidos " + countRem + " Parceiros de Negócio.");
                    }
                }
                else
                {
                    uiUtils.MessageBox("Sem PN para remover!");
                }
            }
            catch (Exception e)
            {
                Logger.getInstance().log("Erro ao remover Parceiros de Negócio", Logger.LogType.INFO, e);
            }
        }
Example #3
0
        /// <summary>
        /// Insere um Lancamento Contabil de Remessa.
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        public int insertShipmentJE(Documents doc)
        {
            int ret = 0;

            try
            {
                logger.pushOperation("insertShipmentJE");

                JournalEntryOp jop = new JournalEntryOp();

                //busca o existente
                JournalEntries existsJe = (JournalEntries)connection.Company.GetBusinessObject(BoObjectTypes.oJournalEntries);
                existsJe.GetByKey(doc.TransNum);

                JournalEntries remJE = copyJE(existsJe, false);
                remJE.Memo = "Lanc. Cont. Remessa - " + doc.DocEntry;
                remJE.UserFields.Fields.Item("U_DocRef").Value = doc.DocEntry;

                double          val   = 0;
                string          memo  = "";
                bool            flag  = false;
                LedgerAccount[] accts = new LedgerAccount[doc.Lines.Count];

                Recordset rs = dbFacade.Query(
                    "SELECT OSTA.Code, OSTA.SalesTax, OSTA.ARExpAct, SUM(DLN4.TaxSum)[value], DLN1.OcrCode " +
                    "FROM OSTA INNER JOIN DLN4 ON OSTA.Code = DLN4.StaCode AND OSTA.Type = DLN4.staType " +
                    "INNER JOIN DLN1 ON DLN1.DocEntry = DLN4.DocEntry AND DLN1.LineNum = DLN4.LineNum " +
                    "WHERE ExpnsCode = -1 AND DLN1.Usage IN (SELECT ID FROM OUSG WHERE U_Shipment = 1) AND DLN4.DocEntry = " + doc.DocEntry +
                    "GROUP BY OSTA.Code, OSTA.SalesTax, OSTA.ARExpAct, DLN1.OcrCode "
                    );

                while (!rs.EoF)
                {
                    LedgerAccount ledger;
                    ledger.creditAccount = rs.Fields.Item("SalesTax").Value;
                    ledger.debitAccount  = rs.Fields.Item("ARExpAct").Value;
                    ledger.provisionName = rs.Fields.Item("Code").Value;
                    ledger.value         = rs.Fields.Item("value").Value;
                    ledger.profitCode    = rs.Fields.Item("OcrCode").Value;
                    //lanca credito e debito de acordo com o imposto
                    addJournalEntryLines(remJE, ledger, ledger.value, remJE.DueDate, ledger.provisionName + " - Remessa", ledger.profitCode, ledger.profitCode);

                    rs.MoveNext();
                }

                System.Runtime.InteropServices.Marshal.ReleaseComObject(rs);
                rs = null;
                System.GC.Collect();


                //caso o documento seja de entrega, estorna custos:
                //O valor deve ser igual ao do número 1.
                if (doc.DocObjectCode == BoObjectTypes.oDeliveryNotes)
                {
                    logger.log("Documento de Entrega, caso a utilizacao esteja configurada, o Custo sera estornado.", Logger.LogType.INFO, null, false);

                    //para cada linha do doc...
                    for (int i = 0; i < doc.Lines.Count; i++)
                    {
                        doc.Lines.SetCurrentLine(i);
                        Document_Lines docLine = doc.Lines;
                        if (jop.validateShmtNFUsage(Convert.ToInt32(docLine.Usage)) == 0)
                        {
                            double vl = dbFacade.Query("select StockValue from DLN1 " +
                                                       "where DocEntry = " + docLine.DocEntry + " and LineNum = " + docLine.LineNum).Fields.Item("StockValue").Value;

                            //busca a conta de custo da utilizacao
                            NotaFiscalUsage usage = connection.Company.GetBusinessObject(BoObjectTypes.oNotaFiscalUsage);
                            usage.GetByKey(Convert.ToInt32(docLine.Usage));
                            accts[i].debitAccount = usage.UserFields.Fields.Item("U_CstAcctCode").Value;
                            accts[i].value        = vl;
                            accts[i].profitCode   = docLine.CostingCode;
                            val += vl;
                            flag = true;
                        }
                        else
                        {
                            flag = false;
                        }
                    }

                    if (flag)
                    {
                        //busca as contas do lancamento existente
                        //LedgerAccount accts;
                        int count = 0, pos = 0;
                        JournalEntries_Lines lines = existsJe.Lines;
                        while (count < lines.Count)
                        {
                            lines.SetCurrentLine(count);
                            if (lines.AccountCode.StartsWith("42"))
                            {
                                accts[pos].creditAccount   = lines.AccountCode;
                                accts[pos++].provisionName = lines.LineMemo;
                            }
                            count++;
                        }
                        //ajusta as contas das linhas
                        if (pos < accts.Length)
                        {
                            pos = 0;
                            string act = accts[0].creditAccount;
                            memo = accts[0].provisionName;
                            for (int i = 0; i < accts.Length; i++)
                            {
                                accts[i].creditAccount = act;
                            }
                        }

                        //1) Uma linha a Crédito, com a finalidade de estornar o lançamento a Débito na conta de custo
                        //originado pelo documento “Entrega”, com valor correspondente à multiplicação das quantidades pelo custo unitário
                        //dos itens em que houver a marcação “Y” para o campo “TaxOnly” na utilização.

                        //lanca os custos para cada linha do doc
                        //2) Uma linha a Débito, na conta de custo parametrizada na tabela de Utilizações, através do campo “U_CstAcctCode”,
                        //para as linhas do documento “Entrega” em que a utilização possuir a marcação “Y” para o campo “TaxOnly”.
                        foreach (LedgerAccount lact in accts)
                        {
                            addCreditJEL(remJE, lact.creditAccount, lact.debitAccount, lact.creditAccount
                                         , lact.value, memo + " - (Reverso)", lines.DueDate, lact.profitCode);

                            addDebitJEL(remJE, lact.debitAccount, lact.creditAccount, lact.debitAccount
                                        , lact.value, "Lanc. Custos - " + lact.debitAccount, lines.DueDate, lact.profitCode);
                        }
                    }
                    else
                    {
                        logger.log("Configuracao da Utilizacao nao permite estorno de Custos.", Logger.LogType.INFO);
                    }
                }

                //insere o lanc.
                remJE = insertJE(remJE);
                if (remJE == null)
                {
                    ret = -1;
                    logger.log("Erro ao adicionar Lancamento Contabil para Reverter Custo e Contabilizar impostos: " +
                               "Lancamento não adicionado.", Logger.LogType.ERROR);
                }
                else
                {
                    logger.log("Adicionado Lancamento Contabil para Reverter Custo e Contabilizar impostos (" + remJE.JdtNum + ")."
                               , Logger.LogType.INFO);

                    doc.UserFields.Fields.Item("U_ShmtJE").Value = "" + remJE.JdtNum;
                    ret = doc.Update();
                    logger.log("Chave de Lancamento de Remessa ajustada no Documento(" + doc.DocEntry + "). Retorno:" + ret, Logger.LogType.INFO);
                }
            }
            catch (Exception e)
            {
                ret = -1;
                logger.log("Erro ao Reverter Custos para o Lancamento " + doc.TransNum, Logger.LogType.ERROR, e, true);
            }

            logger.releaseOperation();

            return(ret);
        }