lunes, 4 de noviembre de 2013

jueves, 26 de septiembre de 2013

Query en Sql para sacar las dimensiones financeras ax 2012

select * from
(
    select
        GENERALJOURNALENTRY.ACCOUNTINGDATE fecha,--fecha
        MAINACCOUNT.MAINACCOUNTID CuentaContable,--cuenta contable
        GeneralJournalAccountEntry.REPORTINGCURRENCYAMOUNT importe,--importe
        DimensionAttributeLevelValue.DISPLAYVALUE dv,
        DimensionAttribute.NAME Nombre,
        GeneralJournalAccountEntry.RECID reciddelatransaccion       
    from GENERALJOURNALENTRY
        inner join GeneralJournalAccountEntry on GENERALJOURNALENTRY.RECID=GeneralJournalAccountEntry.GENERALJOURNALENTRY
        inner join DIMENSIONATTRIBUTEVALUECOMBINATION on GeneralJournalAccountEntry.LEDGERDIMENSION=DIMENSIONATTRIBUTEVALUECOMBINATION.RECID
        inner join MAINACCOUNT on DIMENSIONATTRIBUTEVALUECOMBINATION.MAINACCOUNT=MAINACCOUNT.RECID
        --inner join ABXEBITDADATOSSOBRESALIENTE on MAINACCOUNT.MAINACCOUNTID=ABXEBITDADATOSSOBRESALIENTE.CUENTACONTABLE
        inner join DimensionAttributeValueGroupCombination on DIMENSIONATTRIBUTEVALUECOMBINATION.RECID=DimensionAttributeValueGroupCombination.DIMENSIONATTRIBUTEVALUECOMBINATION
        inner join DimensionAttributeValueGroup on DimensionAttributeValueGroupCombination.DIMENSIONATTRIBUTEVALUEGROUP=DimensionAttributeValueGroup.RECID
        inner join DimensionAttributeLevelValue on DimensionAttributeValueGroup.RECID=DimensionAttributeLevelValue.DIMENSIONATTRIBUTEVALUEGROUP
        inner join DimensionAttributeValue on  DimensionAttributeValue.RECID=DimensionAttributeLevelValue.DIMENSIONATTRIBUTEVALUE
        inner join DimensionAttribute on DimensionAttribute.RECID=DimensionAttributeValue.DIMENSIONATTRIBUTE
    --where ABXEBITDADATOSSOBRESALIENTE.CONCEPTO in (2,3,4,5)       
     )p
pivot (max(dv) for Nombre in ([MainAccount],[División],[Sucursal])) piv   -- **

viernes, 16 de agosto de 2013

Obtener el valor de un enum con la etiqueta

TableGroupAll  SacarAccountCode( str         label)
    {
     
        EnumId      enumId = enumNum(TableGroupAll);
        str Na;      

        DictEnum    dictEnum = new DictEnum(enumId);
        int         numEnum;
        ;    
        numEnum = 0;

        while(numEnum   < dictEnum.values())
        {

            Na=dictEnum.index2Label(numEnum);
            if(label ==Na)
            {
               return dictEnum.index2Value(numEnum);

            }
            numEnum++;
        }      
       return 1;
    }

sábado, 1 de junio de 2013

Cambiar de status un workflow x++ Dynamics AX 2012

static void Job120(Args _args)
{
    WorkflowWorkItemTable WorkflowWorkItemTable;
    ;
///////aqui es el registro que se quiere cambiar de status
    select firstOnly * from WorkflowWorkItemTable
    where WorkflowWorkItemTable.RefTableId==1704
    && WorkflowWorkItemTable.RefRecId==5637153828
    && WorkflowWorkItemTable.UserId==curUserId();
   
    WorkflowWorkItemActionManager::dispatchWorkItemAction(WorkflowWorkItemTable,"Comentario para el historial",curUserId(),WorkflowWorkItemActionType::Complete,"GsWFApprovalsInvTranApprove",false);

}

lunes, 13 de mayo de 2013

SSRS Debug VendAgingReport


static void TestAntiguedadProve(Args _args)
{
    VendAgingReportDP dp=new  VendAgingReportDP();
    VendAgingReportContract contract=new VendAgingReportContract();
    Query q;
    QueryRun qr;
    VendAgingReportTmp VendAgingReportTmp;
   
    ;
   
    contract.parmStartDate(today()-300);
    contract.parmZeroDate(today()-300);
    contract.parmDateTransactionDuedate(DateTransactionDuedate::DocumentDate);
    contract.parmAgingBuckets("CLASICO");
    contract.parmPrintAgingBucketDescription(NoYesCombo::No);
    contract.parmInterval(0);
    contract.parmPeriod(DayMonth::Day);
    contract.parmDirection(ForwardBackwardPrinting::Forward);
    contract.parmDetailed(NoYes::Yes);
    contract.parmPrintZeroOrNegative(NoYes::Yes);
    dp.parmDataContract(contract);
    q = new Query(querystr(VendAgingReport));
    qr=new QueryRun(q);
 
    if(qr.prompt())
    {
        dp.parmQuery(qr.query());      
        dp.processReport();
        VendAgingReportTmp= dp.getVendAgingReportTmp();
        while select * from VendAgingReportTmp
        {
            info(VendAgingReportTmp.AccountNum);
        }
 
     
    }
   
   
   
   
   
   
   
}

jueves, 7 de marzo de 2013

Ax 2012 LookUp Multi select ssrs

////////////////////Contract

[
DataContractAttribute,
SysOperationContractProcessingAttribute(classstr(GsCobranzaPonderadosUIBuilder))

]
Public class GsCobranzaPonderadosContract
{
    Str1260    Division;
    Str1260    Sucursal;
}


////////////////////////////////////////

 [

    DataMemberAttribute('Division'),

   // AifCollectionTypeAttribute('Division', Types::String),

    SysOperationLabelAttribute("Division")

]
public Str1260 parmDivision(Str1260 _disivion=division)
{
   Division=strReplace(_disivion,";",",");

    return Division;
}

/////////////////////////////////////////////

[

    DataMemberAttribute('Sucursal'),

  // AifCollectionTypeAttribute('Sucursal', Types::String),

    SysOperationLabelAttribute("Sucursal")

]
public Str1260 parmSucursal(Str1260 _Sucursal=Sucursal)
{
   Sucursal=strReplace(_Sucursal,";",",");

    return Sucursal;
}

/////////////////////////////////UIBuilder

class GsCobranzaPonderadosUIBuilder  extends SysOperationAutomaticUIBuilder
{
    DialogField                   DivisionC;
    DialogField                   SucursalC;

   // DialogField                   AccountNum;

    FormRun fr;
    GsCobranzaPonderadosContract contract;
}

 /////////////////////////////////////////////77

public void Divisionlookup(FormStringControl accountNumLookup)///division

{
  //  Object control = dialog.formRun().controlCallingMethod();

    Query query = new Query(queryStr(GsLookUpDivisionViewQ));

    container   cnt;
    ;
    SysLookupMultiSelectGrid::lookup(query, accountNumLookup, accountNumLookup, cnt);

}


/////////////////////////////////77

public void Sucursallookup(FormStringControl accountNumLookup)///division

{


    Query query = new Query(queryStr(GsLookUpSucursalViewQ));

    container   cnt;
    ;
    SysLookupMultiSelectGrid::lookup(query, accountNumLookup, accountNumLookup, cnt);

}



////////////////////////////

public void postRun()
{
    str nombre;
    FormDesign fd;
     DialogField dialogField;
    DialogField dialogFieldS;
    ;
     contract = this.dataContractObject();

    super();

     dialog.dialogForm().formRun().controlMethodOverload(false);

     dialogField = this.bindInfo().getDialogField(this.dataContractObject(), methodstr(GsCobranzaPonderadosContract, parmDivision));
     dialogField.lookupButton(2);
     dialogField.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(GsCobranzaPonderadosUIBuilder,  Divisionlookup), this);


     dialogFieldS = this.bindInfo().getDialogField(this.dataContractObject(), methodstr(GsCobranzaPonderadosContract, parmSucursal));
     dialogFieldS.lookupButton(2);
     dialogFieldS.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(GsCobranzaPonderadosUIBuilder,  Sucursallookup), this);

    //AccountNum.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(GsCobranzaPonderadosUIBuilder,  Divisionlookup), this);
    // dialog.dialogForm().formRun().controlMethodOverloadObject(this);



}
////////////////////////////////////////////

public void getFromDialog()

{
     contract = this.dataContractObject();


    super();

   // contract.parmDivision();
    //contract.parmSucursal();


}
/////////////////////////////////////////////7

public void initializeFields()

{

 contract = this.dataContractObject();

}



//////////////////////////////////DP
 [
  SRSReportQueryAttribute('GsCobranzaPonCustTransCustSettlement'),
   SRSReportParameterAttribute(classStr(GsCobranzaPonderadosContract))
  ]
class GsCobranzaPonderadosDP  extends SRSReportDataProviderBase
{

    GsCobranzaPonderadosTMP GsCobranzaPonderadosTMP;
}

Ya lo demas es lo mismo de un reporte normal processReport,etc..........




jueves, 10 de enero de 2013

Utilizar SysTableBrowser para tablas temporales


Class SysTableBrowser
 
public void run(tableId tableId,common tmpBuffer = null)
public void run(tableId tableId)
{
    Form                            tableBrowser;
    Object                          formRun;
    formRun fr;
    FormBuildDesign                 formBuildDesign;
    FormDataSource            fds;
    FormBuildDataSource             formBuildDataSource;
    FormBuildGridControl            formBuildGridControl1;
    FormBuildGridControl            formBuildGridControl2;
    FormGridControl                 formGridControl;
    FormRadioControl                formRadioControl;
    DictTable                       dictTable;
    Args                            args;
    Args                            browserArgs;
    int                             idx;
    boolean                         hasAutoReportGroup;
    ;

    dictTable   = new DictTable(tableId);

    //If the table is abstract, don't allow creates in SysTableBrowser.
    if(dictTable.isAbstract())
    {
        allowCreate = false;
    }

    browserArgs     = new Args();
    browserArgs.name(formstr(SysTableBrowser));
    formRun         = classfactory.formRunClass(browserArgs);

    tableBrowser    = formRun.form();


    formBuildDataSource = tableBrowser.dataSource(1);
    formBuildDataSource.name(dictTable.name());
    formBuildDataSource.table(tableId);
    formBuildDataSource.autoQuery(true);
    formBuildDataSource.linkType(0);
    formBuildDataSource.allowCreate(allowCreate);
    formBuildDataSource.allowDelete(allowDelete);
    formBuildDataSource.allowEdit(allowEdit);
    formBuildDataSource.validTimeStateAutoQuery(ValidTimeStateAutoQuery::DateRange);
    formBuildDataSource.validTimeStateUpdate(ValidTimeStateUpdate::Correction);

    if (defaultIndexId)
    {
        formBuildDataSource.index(defaultIndexId);
    }

    formBuildDesign = tableBrowser.design();
    formBuildDesign.caption("@SYS54191" + ': ' + dictTable.name());
    formBuildDesign.widthMode(-1);
    formBuildDesign.widthValue(#FormWidth);
    formBuildDesign.heightMode(-1);
    formBuildDesign.heightValue(#FormHeight);

    formBuildGridControl1 = formBuildDesign.control('allFieldsGrid');
    formBuildGridControl1.dataSource(dictTable.name());
    formBuildGridControl1.allowEdit(allowEdit);
    idx = formBuildGridControl1.id();

    this.showAllFields(tableId, formBuildGridControl1, formBuildDataSource);

    formBuildGridControl2 = formBuildDesign.control('autoReportGrid');
    formBuildGridControl2.dataSource(dictTable.name());
    formBuildGridControl2.allowEdit(allowEdit);
    formBuildGridControl2.visible(false);

    hasAutoReportGroup = this.showAutoFields(tableId, formBuildGridControl2, formBuildDataSource);

    args = new Args();
    args.object(tableBrowser);
    formRun = classfactory.formRunClass(args);


    formRun.enableCountryRegion(false);
    if (tmpBuffer)
    {
        formRun.parmTmpData(tmpBuffer);
    }
    formRun.init();
    formRun.parmTableId(tableId);

    formRun.run();
    fr=formRun;
    fds=fr.dataSource(dictTable.name());
    fds.executeQuery();

    formRadioControl = formRun.getRadioControl();
    formRadioControl.visible(hasAutoReportGroup);

    formGridControl = formRun.control(idx);
    formGridControl.setFocus();

    // This call is here as a hack fix (AXSE:4564 or AX6:18807) for performance issue around Table Browser
    // loading time, and should be removed once a proper fix is in place.
    formGridControl.autoSizeColumns(false);

    formRun.detach();


}

form SysTableBrowser


class FormRun extends ObjectRun
{
    tableId tableId;
    Source sqlcmd;
    DictTable dictTable;
    Common _tmpBuffer;


}

 //agregar
private void parmTmpData(common tmpBuffer)
{

    ;
    _tmpBuffer=tmpBuffer;

}

 //modificar

void run()
{
     FormDataSource            fds;    
     Common Common;   ;
    super();
    dictTable = new DictTable(tableId);
    this.parmSQLStmt('SELECT * FROM '+tableid2name(tableId));
    fds=element.dataSource(1);   
    Common=fds.cursor();                
    Common.setTmp();
    Common.setTmpData(_tmpBuffer);
}
///ejecutar
new SysTableBrowser().run(CommonBuffer.TableId, CommonBuffer);