Wednesday, February 12, 2020

Calling class from form and form DS level

Class TDCFinishPreOperation

Field level :
--------------

void clicked()
{
    Args args = new Args();

    super();

    args.record(ProdParmReportFinished);

    TDCFinishPreOperation::main(args);
 }
-----------------------------------------------------------------------------

Scenario 2: Form level
------------------------------
void init()
{
    args args;
    ProdTable   prodTableLocal ;
    ProjId      projId;

    if(!element.args().caller())
        throw error(strFmt("@NCC174",'NCProjProdWizardEdit'));

    // get record from the Class, not from callerForm
 
    args      = element.args().caller().getArgs();
    prodTableLocal = args.record();

    this.setProdTable(prodTableLocal);
    this.setParentProjId(prodTableLocal.ProjId);

    super(); 

    this.insertProjToProdValues();

    //----------------BLR97124
}

Create Journal for Production orders

public void FinishPreOprDiggEnterprinor(ProdId _prodId, OprNum _oprNum, ProdParmReportFinished _prodParmReportFinished)
{
    ProdParmReportFinished              prodParmReportFinishedLoc;

    select prodRoute where prodRoute.ProdId == _prodId &&
                           prodRoute.OprNum == _oprNum;

    prodParmReportFinishedLoc.clear();
    prodParmReportFinishedLoc.initValue();
    prodParmReportFinishedLoc.initFromProdTable(ProdTable::find(_prodParmReportFinished.ProdId));
    prodParmReportFinishedLoc.FromOprNum         = _oprNum;
    prodParmReportFinishedLoc.ToOprNum           = _oprNum;
    prodParmReportFinishedLoc.AcceptError        = _prodParmReportFinished.AcceptError;
    prodParmReportFinishedLoc.EndRouteCard       = _prodParmReportFinished.EndRouteCard;
    prodParmReportFinishedLoc.EndJob             = _prodParmReportFinished.EndJob;
    prodParmReportFinishedLoc.AutoUpdate         = _prodParmReportFinished.AutoUpdate;
    prodParmReportFinishedLoc.BOMJournalNameId   = _prodParmReportFinished.BOMJournalNameId;
    prodParmReportFinishedLoc.BOMAutoConsump     = _prodParmReportFinished.BOMAutoConsump;
    prodParmReportFinishedLoc.ExecutedDateTime   = DateTimeUtil::getSystemDateTime();
    prodParmReportFinishedLoc.JobStatus          = ParmJobStatus::Executed;
    prodParmReportFinishedLoc.JournalShowInfo    = _prodParmReportFinished.JournalShowInfo;
    prodParmReportFinishedLoc.LineNum            = 1;
    prodParmReportFinishedLoc.ParmId             = _prodParmReportFinished.ParmId;
    prodParmReportFinishedLoc.QtyGood            = _prodParmReportFinished.QtyGood;
    prodParmReportFinishedLoc.QtyError           = _prodParmReportFinished.QtyError;
    prodParmReportFinishedLoc.TransDate          = _prodParmReportFinished.TransDate;
    prodParmReportFinishedLoc.ProdJournalNameId  = _prodParmReportFinished.ProdJournalNameId;
    prodParmReportFinishedLoc.RouteJournalNameId = _prodParmReportFinished.RouteJournalNameId;
    prodParmReportFinishedLoc.insert();

    prodJournalCreate = ProdJournalCreateRoute::newReportFinished(_prodParmReportFinished);
    prodJournalCreate.parmOprNumFrom(_oprNum);
    prodJournalCreate.parmOprNumTo(_oprNum);
    prodJournalCreate.run();

    prodJournalTable = prodJournalCreate.usedProdJournalTable();

    if (prodJournalTable.RecId && prodJournalTable.JournalId)
    {
        prodJournalCheckPostRoute = ProdJournalCheckPostRoute::newPostJournal(prodJournalTable.JournalId,_prodParmReportFinished.JournalShowInfo);
        prodJournalCheckPostRoute.run();
    }
}
------------------------------------------------------------
static void main(Args _args)
{
    TDCFinishPreOperation  tDCFinishPreOperation = new TDCFinishPreOperation();
    ProdParmReportFinished parmReportFinished;

    if (_args.dataset() == tableNum(ProdParmReportFinished))
    {
        parmReportFinished = _args.record();
    }

    tDCFinishPreOperation.ParmProdParmReportFinished(parmReportFinished);
    tDCFinishPreOperation.run();
}

Create Journal for ProdRoute table productions : Finish Previous Operation Digging/Enterprinor

class TDCFinishPreOperation
{
    ProdJournalTable                    prodJournalTable;
    ProdJournalRoute                    prodJournalRoute;
    ProdRoute                           prodRoute, prodRouteLoc; 
    RouteOprId                          routeOprId;
    ProdJournalCheckPostRoute           prodJournalCheckPostRoute;
    ProdJournalCreateRoute              prodJournalCreate;
    ProdParmReportFinished              prodParmReportFinished;
}

public ProdParmReportFinished ParmProdParmReportFinished(ProdParmReportFinished _prodParmReportFinished = prodParmReportFinished)
{
    prodParmReportFinished = _prodParmReportFinished;

    return prodParmReportFinished;
}
public void run()
{
    ProdTable               prodTable = ProdTable::find(ProdParmReportFinished.ProdId);

    RouteOprTable           routeOprTableLoc;
    int                     oprNextNum;

    select firstOnly RecId, OprId from routeOprTableLoc
                  join OprNum from prodRoute where routeOprTableLoc.OprId == prodRoute.OprId &&
                                             (routeOprTableLoc.ExecuteBy == NCExecuteBy::Digging ||
                                             routeOprTableLoc.ExecuteBy == NCExecuteBy::Entreprenor) &&
                                             prodRoute.ProdId == prodTable.ProdId &&
                                             prodRoute.OprNum == ProdParmReportFinished.FromOprNum;
    if (routeOprTableLoc.RecId)
    {
        oprNextNum = prodRoute.OprNum;

        while select prodRouteLoc order by OprNum where prodRouteLoc.OprNum < oprNextNum &&
                                                        prodRouteLoc.ProdId == prodTable.ProdId &&
                                                        prodRouteLoc.ProdStatus == ProdStatus::StartedUp
        {
           this.FinishPreOprDiggEnterprinor(prodRouteLoc.ProdId, prodRouteLoc.OprNum, prodParmReportFinished);
        }
    }
}

Get NAME From DirPerson : Join tables are DirPerson, HcmWorker and CustTable

public void insert()
{
    DirPerson               dirPerson;
    HcmWorker               hcmWorker;
    CustTable               custTableLoc; 
 
    if(!this.TDC_DiggingCoordinator)
    {
       select Name from dirPerson
                      join hcmWorker
                          where hcmWorker.Person == dirPerson.RecId
                      join custTableLoc
                          where custTableLoc.AccountNum == this.CustAccount &&
                                  custTableLoc.DiggingCoordinator == hcmWorker.RecId;

       this.TDC_DiggingCoordinator  =  dirPerson.Name;
    }

Display method : ProdTable : get user user name based on UserId

public Display TDC_CreatedBy getUserName()
{
    TDC_CreatedBy        nameLoc;
    UserInfo             userInfoLoc;

    select Name from userInfoLoc
                    where userInfoLoc.Id == this.createdBy;

    nameLoc     =      userInfoLoc.name;
    return nameLoc;
}

Get the record from ProjTable and insert into ProdTable with the help of init()

public void initFromProjTable(ProjTable  _projTable)
{
    this.ProjId = _projTable.ProjId;

    if (this.isProjMethodFinished() || this.isProjMethodConsumed())
    {
        ProjInventJournalTransMapForm::construct(this).initFromProjTable(_projTable);
    }

    // NC 2015 05 14 - requested by SVBAN
    this.ProdSortingId      = _projTable.sortingId;
    this.ProdSortingId[1]   = "";
    this.Name               = _projTable.name;

    //TDC_JIRASYSCADY-573
    if (!this.TDC_DiggingCoordinator)
    {
        this.TDC_DiggingCoordinator = _projTable.TDC_DiggingCoordinator;
    }
    //TDC_JIRASYSCADY-573
}

Get Name from DirPerson: ProdTable.TDC_DiggingCoordinator

public void insert()
{
    DirPerson               dirPerson;
    HcmWorker               hcmWorker;
    CustTable               custTableLoc;   

    //TDC_JIRASYSCADY-573
    if(!this.TDC_DiggingCoordinator)
    {
       select Name from dirPerson
                      join hcmWorker
                          where hcmWorker.Person == dirPerson.RecId
                      join custTableLoc
                          where custTableLoc.AccountNum == this.CustAccount &&
                                  custTableLoc.DiggingCoordinator == hcmWorker.RecId;

       this.TDC_DiggingCoordinator  =  dirPerson.Name;
    }
    //TDC_JIRASYSCADY-573
}

Command for stop the service

sc queryex <servicename>
taskkill /f /pid <PID>

Command for clear the cache in server

del "%USERPROFILE%\AppData\Local\ax*.kti"
del "%USERPROFILE%\AppData\Local\ax*.auc