Monday, November 17, 2025

Hour and Expense journal creation

 private void CreateExpenseJournal(TransactionID    _transIdLedgerjournaltable   _ledgerjournaltable ) 

    { 

        // LedgerJournalTable      ledgerJournaltable; 

        LedgerJournalTrans          ledgerJournalTransledgerJournalTransRef; 

        LedgerJournalTrans_Project  ledgerJournalTrans_ProjledgerJournalTrans_Projlocal; 

        NumberSequenceTable         numberSequenceTable; 

        Voucher                     voucher; 

  

        LedgerJournalTrans_ProjectTaxExtensionIN ledgerJournalTrans_ProjectTaxExtensionIN; 

  

        select ledgerJournalTrans_Proj 

        where ledgerJournalTrans_Proj.TransId == _transId; 

  

        select ledgerJournalTransRef 

        where ledgerJournalTransRef.RecId == ledgerJournalTrans_Proj.RefRecId; 

        ttsbegin; 

        ledgerJournalTrans.clear(); 

        ledgerJournalTrans.initValue(); 

        ledgerJournalTrans.initFromLedgerJournalTable_LT(_ledgerjournaltable); 

        numberSequenceTable = NumberSequenceTable::find(LedgerJournalName::find(_ledgerjournaltable.JournalName).NumberSequenceTable); 

        voucher = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher(); 

        ledgerJournalTrans.Voucher          = voucher; 

        ledgerJournalTrans.JournalNum       = _ledgerjournaltable.JournalNum; 

        ledgerJournalTrans.DefaultDimension = ledgerJournalTransRef.DefaultDimension; 

        ledgerJournalTrans.TransDate        = ledgerJournalTransRef.TransDate; 

        ledgerJournalTrans.LedgerDimension  = ledgerJournalTransRef.LedgerDimension; 

        ledgerJournalTrans.Txt              = ledgerJournalTransRef.Txt; 

        ledgerJournalTrans.CurrencyCode     = ledgerJournalTransRef.CurrencyCode; 

        ledgerJournalTrans.OffsetAccountType = ledgerJournalTransRef.OffsetAccountType; 

        ledgerJournalTrans.OffsetLedgerDimension    = ledgerJournalTransRef.OffsetLedgerDimension; 

        ledgerJournalTrans.AccountType      = ledgerJournalTransRef.AccountType; 

        ledgerJournalTrans.TaxGroup                 = ledgerJournalTransRef.TaxGroup; 

        ledgerJournalTrans.TaxItemGroup     = ledgerJournalTransRef.TaxItemGroup; 

        ledgerJournalTrans.Qty              = ledgerJournalTransRef.Qty; 

        ledgerJournalTrans.ExchRate         = ledgerJournalTransRef.ExchRate; 

        ledgerJournalTrans.insert(); 

        ledgerJournalTrans.write(); 

        // ledgerJournalTrans 

  

        ledgerJournalTrans_Projlocal.initValue(); 

        ledgerJournalTrans_Projlocal.RefRecId           = ledgerJournalTrans.RecId; 

        ledgerJournalTrans_Projlocal.ProjTransDate      = ledgerJournalTrans_Proj.ProjTransDate; 

        ledgerJournalTrans_Projlocal.ActivityNumber     = ledgerJournalTrans_Proj.ActivityNumber; 

        ledgerJournalTrans_Projlocal.CategoryId         = ledgerJournalTrans_Proj.CategoryId; 

        ledgerJournalTrans_Projlocal.Worker             = ledgerJournalTrans_Proj.Worker; 

        ledgerJournalTrans_Projlocal.Qty                = ledgerJournalTrans_Proj.Qty * -1; 

        ledgerJournalTrans_Projlocal.CostPrice          = ledgerJournalTrans_Proj.CostPrice *-1; 

        ledgerJournalTrans_Projlocal.SalesPrice         = ledgerJournalTrans_Proj.SalesPrice * -1; 

        ledgerJournalTrans_Projlocal.LinePropertyId     = ledgerJournalTrans_Proj.LinePropertyId; 

        // added by kiran 

        ledgerJournalTrans_Projlocal.SalesCurrencyId    = ledgerJournalTransRef.CurrencyCode; 

        ledgerJournalTrans_Projlocal.ProjId             = ledgerJournalTrans_Proj.ProjId; 

        ledgerJournalTrans_Projlocal.Ale_ProjInvoiceId   = ProjInvoiceCost::findTransId(_transId).ProjInvoiceId; 

        ledgerJournalTrans_Projlocal.PositionId = ledgerJournalTrans_Proj.PositionId; 

        ledgerJournalTrans_Projlocal.ALE_PeriodName = ledgerJournalTrans_Proj.ALE_PeriodName; 

        ledgerJournalTrans_Projlocal.insert(); 

        ledgerJournalTrans_Projlocal.write(); 

  

        ledgerJournalTrans_ProjectTaxExtensionIN.clear(); 

        ledgerJournalTrans_ProjectTaxExtensionIN.AssessableValue = (ledgerJournalTrans_Projlocal.Qty*ledgerJournalTrans_Projlocal.SalesPrice) * -1; 

        ledgerJournalTrans_ProjectTaxExtensionIN.LedgerJournalTrans_Project = ledgerJournalTrans_Projlocal.RecId; 

        ledgerJournalTrans_ProjectTaxExtensionIN.insert(); 

        ttscommit; 

  

  

    } 

    private void CreateHourJournal(TransactionID _transIdprojJournalTable   _projtable ) 

    { 

        ProjJournalTable        projJournalTable; 

        ProjJournalTrans        projJournalTransprojJournalTransRef; 

        ProjInvoiceEmpl         projinvoiceempl; 

        NumberSeq               numberSeq; 

        ProjJournalTransTaxExtensionIN      projJournalTransTaxExtensionINprojJournalTransTaxExtensionINlocal; 

        // projinvoiceempl  = ProjInvoiceEmpl::findRecId(_RefRecId); 

  

        select projJournalTransRef 

        where projJournalTransRef.TransId == _transId; 

        projJournalTransTaxExtensionIN = ProjJournalTransTaxExtensionIN::findByProjJournalTrans(projJournalTransRef.RecId); 

  

        projJournalTrans.clear(); 

        projJournalTrans.initValue(); 

        projJournalTrans.initFromProjJournalTable(_projtable); 

        projJournalTrans.setTransDate(); 

  

        projJournalTrans.TransDate      = projJournalTransRef.TransDate; 

        projJournalTrans.CurrencyId     = projJournalTransRef.CurrencyId; 

        projJournalTrans.DefaultDimensionprojJournalTransRef.DefaultDimension; 

        projJournalTrans.TaxGroupId     = projJournalTransRef.TaxGroupId; 

        numberSeq = NumberSeq::newGetVoucherFromId(_projtable.VoucherNumberSequenceTable, false); 

        projJournalTrans.Voucher        = numberSeq.voucher(); 

        projJournalTrans.ProjId         = projJournalTransRef.ProjId; 

        projJournalTrans.SalesPrice     = projJournalTransRef.SalesPrice; 

        projJournalTrans.ActivityNumber = projJournalTransRef.ActivityNumber; 

        projJournalTrans.CategoryId     = projJournalTransRef.CategoryId; 

        projJournalTrans.Worker         = projJournalTransRef.Worker; 

        projJournalTrans.Txt            = projJournalTransRef.Txt; 

        projJournalTrans.Qty            = projJournalTransRef.Qty* -1; 

        projJournalTrans.ProjTransDate  = projJournalTransRef.ProjTransDate; 

        projJournalTrans.PositionId     = projJournalTransRef.PositionId; 

        //projJournalTrans.ALE_PeriodName = projJournalTransRef.ALE_PeriodName; 

        projJournalTrans.LinePropertyId =projJournalTransRef.LinePropertyId; 

        projJournalTrans.ReverseEntry   = projJournalTransRef.ReverseEntry; 

        projJournalTrans.ALE_Absent     = projJournalTransRef.ALE_Absent; 

        projJournalTrans.ALE_Holiday    = projJournalTransRef.ALE_Holiday; 

        projJournalTrans.ALE_PeriodName = projJournalTransRef.ALE_PeriodName; 

        projJournalTrans.ALE_Present    = projJournalTransRef.ALE_Present; 

        projJournalTrans.Ale_ProjInvoiceId  = ProjInvoiceEmpl::findTransId(_transId).ProjInvoiceId; 

  

        projJournalTrans.Ale_WorkerName = HcmWorker::find(projJournalTrans.Worker).name(); 

        projJournalTrans.Ale_PositionName = HcmPosition::findByPosition(projJournalTrans.PositionId).description(); 

        

        projJournalTrans.insert(); 

  

        //projJournalTransTaxExtensionINlocal.initValue(); 

        select projJournalTransTaxExtensionINlocal where projJournalTransTaxExtensionINlocal.ProjJournalTrans == projJournalTrans.RecId; 

        if(!projJournalTransTaxExtensionINlocal) 

        { 

            projJournalTransTaxExtensionINlocal.clear(); 

            projJournalTransTaxExtensionINlocal.AssessableValue = projJournalTransTaxExtensionIN.AssessableValue * -1; 

            //projJournalTransTaxExtensionINlocal.CompanyLocation = projJournalTransTaxExtensionIN.CompanyLocation; 

            projJournalTransTaxExtensionINlocal.ProjJournalTrans    = projJournalTrans.RecId; 

            projJournalTransTaxExtensionINlocal.insert(); 

        } 

        else 

        { 

            ttsbegin; 

            projJournalTransTaxExtensionINlocal.selectForUpdate(true); 

            projJournalTransTaxExtensionINlocal.AssessableValue = projJournalTransTaxExtensionIN.AssessableValue * -1; 

            projJournalTransTaxExtensionINlocal.ProjJournalTrans    = projJournalTrans.RecId; 

            projJournalTransTaxExtensionINlocal.update(); 

            ttscommit; 

        } 

    } 

 

void run() 

    { 

        ProjJournalTable        projJournalTableprojJournalTableLocalprojJournalTableUpdate; 

        LedgerJournalTable      ledgerjournaltableledgerjournaltablelocal; 

        ProjEmplTransSale       projEmplTransSalelocal; 

        ProjJournalTrans        projJournalTranshour; 

        boolean                 projtranscheck = false, projinvoicecostcheck = false; 

        ProjInvoiceCostDetail   projinvoicecostdetail; 

        ProjInvoiceCost         projInvoiceCost; 

        ProjCostTransSale       ProjCostTransSaleLocal; 

  

        ListIterator    li = new ListIterator(list); 

        #ISOCountryRegionCodes 

  

        projCreditInvoicing = true; 

  

        //ttsBegin; 

        projJournalTable.clear(); 

        projJournalTable.initValue(); 

        projJournalTable.JournalNameId  = "CreditNote"; 

        projJournalTable.JournalType    =ProjJournalType::Hour; 

        projJournalTable.initFromProjJournalName(ProjJournalName::find(projJournalTable.JournalNameId)); 

        projJournalTable.insert(); 

  

        ledgerjournaltable.clear(); 

        ledgerjournaltable.initValue(); 

  

        ledgerjournaltable.initFromLedgerJournalName("CreditNote"); 

        ledgerjournaltable.JournalType      = LedgerJournalType::Cost; 

        ledgerjournaltable.JournalName = "CreditNote"; 

        //ledgerjournaltable.initFromLedgerJournalName(ledgerjournaltable.JournalName); 

        ledgerjournaltable.insert(); 

  

        li.begin(); 

        while (li.more()) 

        { 

            tmpFrmVirtual = li.value(); 

  

            switch (tmpFrmVirtual.TableNum) 

            { 

                // project transactions 

                case tableNum(ProjInvoiceEmplDetail) : 

                   // this.doProjInvoiceEmpl(tmpFrmVirtual.RefRecId); 

                   projEmplTransSalelocal       = ProjEmplTransSale::find(tmpFrmVirtual.RefRecId); // to do 

                    if (projEmplTransSalelocal) 

                    { 

                        this.CreateHourJournal(projEmplTransSalelocal.TransId,projJournalTable); // to do 

                        projtranscheck = true; 

                    } 

                    break; 

  

                case tableNum(ProjInvoiceCostDetail) : 

                   // this.doProjInvoiceCost(tmpFrmVirtual.RefRecId); 

                   ProjCostTransSaleLocal   = ProjCostTransSale::find(tmpFrmVirtual.RefRecId); 

                    if(ProjCostTransSaleLocal) 

                    { 

                        this.CreateExpenseJournal(ProjCostTransSaleLocal.TransId,ledgerjournaltable); // to do 

                        projinvoicecostcheck = true; 

                    } 

                    break; 

  

                case tableNum(ProjInvoiceRevenueDetail) : 

                   // this.doProjInvoiceRevenue(tmpFrmVirtual.RefRecId); 

                    break; 

  

                case tableNum(ProjInvoiceItemDetail) : 

                    //this.doProjInvoiceItem(tmpFrmVirtual.RefRecId); 

                    break; 

  

                case tableNum(ProjInvoiceOnAccDetail) : 

                   // this.doProjInvoiceOnAcc(tmpFrmVirtual.RefRecId); 

                    break; 

  

                default: 

                    throw error("@SYS50049"); 

            } 

  

            //if (projCreditInvoicing) 

            //{ 

            //    this.doCreditInvoicing(tmpFrmVirtual.RefRecIdtmpFrmVirtual.TableNum); 

            //} 

  

            li.next(); 

        } 

            if (projtranscheck == false) 

            { 

                delete_from projJournalTableLocal 

            where projJournalTableLocal.RecId  == projJournalTable.RecId; 

            } 

            else 

            { 

                select sum(Qty) from projJournalTranshour 

            where projJournalTranshour.RecId == projJournalTable.RecId; 

                projJournalTable.selectForUpdate(true); 

                projJournalTable.ProjQty   = projJournalTranshour.Qty; 

                projJournalTable.update(); 

                info(strFmt("%1 hour journal has been created", projJournalTable.JournalId)); 

            } 

            if(projinvoicecostcheck == false) 

            { 

                delete_from ledgerjournaltablelocal 

            where ledgerjournaltablelocal.RecId  == ledgerjournaltable.RecId; 

            } 

            else 

            { 

                info(strFmt("%1 Expense journal has been created", ledgerjournaltable.JournalNum)); 

            } 

  

            //ttsCommit; 

    } 

No comments:

Post a Comment