invent etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
invent etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Ağustos 2016 Salı

AXAPTA - Eldeki miktar (invent on hand)

//source: http://microsoft-dynamics-ax-erp.blogspot.com.tr/2012/07/find-inventonhand-in-axapta-x.html
static InventOnHand findOnHandByLocationId(ItemId _itemId, InventLocationId _inventLocationId = "")
{
    InventDim           inventDim;
    InventDimParm       inventDimParm;
    InventOnHand        inventOnHand = new InventOnHand();
    ;

    if (_inventLocationId == "")

         return InventOnhand::newItemId(_itemId);
    //Take a combination of dimension , against which you want to find the stock
    inventDim.InventLocationId  = _inventLocationId;

    //Set the flag for the selected dimensions as active
    inventDimParm.initFromInventDim(inventDim);

    //Initialize the inventSumDateDim with Date,item,dimension and dim parameter
    inventOnHand = InventOnHand::newParameters(_itemid,
                                               inventDim,
                                               inventDimParm);

    return inventOnHand;
}



veya:

//http://daxtechies.blogspot.com/2013/03/to-find-stock-on-hand-in-ax-through-x.html
InventSum           inventsum;
    Qty                 availableQty = 0;
    ;

    select sum(PostedQty),
        sum(Received),
        sum(Deducted),
        sum(Registered),
        sum(Picked),
        sum(ReservPhysical),
        sum(Ordered),
        sum(Arrived),
        sum(ReservOrdered),
        sum(OnOrder) from inventsum
        where inventsum.ItemId      == "KCYIWU001";
    if (inventsum)
    {
        availableQty = inventsum.PostedQty
            + inventsum.Received
            - inventsum.Deducted
            + inventsum.Registered
            - inventSum.Picked
            - inventSum.ReservPhysical
            + inventsum.Ordered
            + inventsum.Arrived
            - inventsum.ReservOrdered
            - inventsum.OnOrder;

    }

30 Kasım 2015 Pazartesi

AX 2012 - Ürün ekleme/güncelleme

//http://daxtechies.blogspot.com.tr/2013/12/ax2012-r2-creating-product-or-product.html
  if ( InventTable::find(itemId).ItemId != "" )
            this.updateProduct();
        else
            this.newProduct();
        itemRecId = EcoResProduct::findByDisplayProductNumber(itemId).RecId;
        this.updateInventTable();


private void newProduct(EcoResProductSubtype _subType = EcoResProductSubtype::Product)
{
    EcoResProductService                    erProdSvc;
    EcoResEcoResProduct                     ecoResProd;
    EcoResEcoResProduct_Product_Master      prodMaster;
    EcoResEcoResProduct_Translation         translation;
    EcoResEcoResProduct_Identifier          identifier;
    EcoResEcoResProduct_ProductDimGroup     prodDimGroup;
    EcoResEcoResProduct_Product_Distinct    distMaster;
    EcoResEcoResProduct_StorageDimGroup     storDimGroup;
    EcoResEcoResProduct_TrackingDimGroup    tracDimGroup;
    InventTable                             inventTable;

    erProdSvc   = EcoResProductService::construct();
    ecoResProd  = new EcoResEcoResProduct();

    if (_subType == EcoResProductSubtype::ProductMaster) //varyantlı ürün
    {
        prodMaster    = new EcoResEcoResProduct_Product_Master();
        prodMaster.parmDisplayProductNumber(itemId);
        prodMaster.parmProductType(EcoResProductType::Item);
        prodMaster.parmSearchName(nameAlias);
        prodMaster.parmVariantConfigurationTechnology(EcoResVariantConfigurationTechnologyType::PredefinedVariants);

        translation = prodMaster.createTranslation().addNew();
        identifier  = prodMaster.createIdentifier().addNew();

        prodDimGroup = prodMaster.createProductDimGroup().addNew();
        prodDimGroup.parmProduct(itemId);
        prodDimGroup.parmProductDimensionGroup(dimGroup);

        storDimGroup = prodMaster.createStorageDimGroup().addNew();

        tracDimGroup = prodMaster.createTrackingDimGroup().addNew();
    }
    if (_subType == EcoResProductSubtype::Product) //varyantsız ürün
    {
        distMaster = new EcoResEcoResProduct_Product_Distinct();
        distMaster.parmDisplayProductNumber(itemId);
        distMaster.parmProductType(EcoResProductType::Item);
        distMaster.parmSearchName(nameAlias);

        translation = distMaster.createTranslation().addNew();
        identifier  = distMaster.createIdentifier().addNew();

        storDimGroup = distMaster.createStorageDimGroup().addNew();

        tracDimGroup = distMaster.createTrackingDimGroup().addNew();
    }

    translation.parmDescription(itemName);
    translation.parmLanguageId(SystemParameters::getSystemLanguageId());
    translation.parmName(itemName);

    storDimGroup.parmProduct(itemId);
    storDimGroup.parmStorageDimensionGroup(storeGroup);

    tracDimGroup.parmProduct(itemId);
    tracDimGroup.parmTrackingDimensionGroup(trackingGroup);

    identifier.parmProductNumber(itemId);
    if (_subType == EcoResProductSubtype::ProductMaster) //varyantlı ürün
        ecoResProd.createProduct().add(prodMaster);
    if (_subType == EcoResProductSubtype::Product) //varyantsız ürün
        ecoResProd.createProduct().add(distMaster);

    erProdSvc.create(ecoResProd);
    EcoResProductReleaseManagerBase::releaseProduct(EcoResProduct::findByProductNumber(itemId).RecId,CompanyInfo::find().RecId);

}


private void updateProduct()
{
    InventTableModule           inventModule;
    EcoResProductTranslation    translation;

    update_recordSet inventModule setting unitId = unitId
        where inventModule.ItemId == itemId;
    update_recordSet translation
        setting Description = itemName,
                Name        = itemName
        where translation.Product == itemRecId &&
              translation.LanguageId == SystemParameters::getSystemLanguageId();
}

private void updateInventTable()
{
    InventTable             inventTable;
    InventModelGroupItem    modelGroup;
    update_recordSet inventTable
        setting NetWeight   = netWeight,
                TaraWeight  = taraWeight,
                GrossDepth  = depth,
                GrossWidth  = width,
                GrossHeight = height,
                UnitVolume  = volume
        where
            inventTable.Product == itemRecId;
    if (inventModelGroupId == "")
        delete_from modelGroup
            where modelGroup.ItemId == itemId && modelGroup.ItemDataAreaId == curext() &&
                  modelGroup.ModelGroupDataAreaId == curext();
    else
    {
        select firstOnly forUpdate modelGroup
            where modelGroup.ItemId == itemId && modelGroup.ItemDataAreaId == curext() &&
                  modelGroup.ModelGroupDataAreaId == curext();
        modelGroup.ItemId = itemId;
        modelGroup.ItemDataAreaId = curext();
        modelGroup.ModelGroupDataAreaId = curext();
        modelGroup.ModelGroupId = inventModelGroupId;
        if (modelGroup.RecId == 0)
            modelGroup.insert();
        else
            modelGroup.update();
    }
}

27 Aralık 2011 Salı

AXAPTA stok transfer günlüğü post

    journalTableData        journalTabledata;
    inventJournalTable      inventJournalTable;
    InventJournalCheckPost  journalCheckPost;
    ;
    inventJournalTable = inventJournalTable::find(Line.InventJournalId);
    // Posting Journal
    journalTableData = JournalTableData::newTable(inventJournalTable);
    journalTableData.updateBlock(JournalBlockLevel::InUse,JournalBlockLevel::None);
    if (infolog.num(Exception::Error))
        return;
    infolog.clear(0);
    journalCheckPost =
    InventjournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post,InventJournalTable);
    journalCheckPost.parmAutoBlock(true);
    journalCheckPost.run();
    if(journalTableData.hasErrors())
        return;

22 Aralık 2011 Perşembe

AXAPTA stok transfer günlüğü

Normalde formla çalışırken InventJournalName'yi seçiyoruz ve parametreler otomatik geliyor. Burda bu işlemi kendimiz yapıyoruz:

    InventJournalTrans  inventJournalTrans;
    InventJournalTable  inventJournalTable;
    InventJournalName   inventJournalName;
    InventDim toInventDim;
    InventDim tempInventDimTo;
    ;
    // Journal Header işle
    inventJournalName   = "MyJournalName"
    inventJournalTable.initValue();
    inventJournalTable.JournalId        = NumberSeq::newGetNum(InventParameters::numRefInventJournalId()).num();
    inventJournalTable.Description      = InventJournalName.Description;
    inventJournalTable.Reservation      = ItemReservation::Automatic;
    inventJournalTable.JournalType      = inventJournalType::Transfer;

    inventJournalTable.BlockUserGroupId     = inventJournalName.BlockUserGroupId;
    inventJournalTable.JournalNameId        = inventJournalName.JournalNameId;
    inventJournalTable.ApprUserGroup        = inventJournalName.ApprUserGroup;
    inventJournalTable.ApprFromSiteId       = inventJournalName.ApprFromSiteId;
    inventJournalTable.ApprFromLocationId   = inventJournalName.ApprFromLocationId;
    inventJournalTable.ApprFromWMSLocationId= inventJournalName.ApprFromWMSLocationId;
    inventJournalTable.ApprFromBatchId      = inventJournalName.ApprFromBatchId;
    inventJournalTable.ApprToSiteId         = inventJournalName.ApprToSiteId;
    inventJournalTable.ApprToLocationId     = inventJournalName.ApprToLocationId;
    inventJournalTable.ApprToWMSLocationId  = inventJournalName.ApprToWMSLocationId;
    inventJournalTable.ApprToBatchId        = inventJournalName.ApprToBatchId;
    inventJournalTable.VoucherSeqId         = inventJournalName.VoucherSeqId;

    inventJournalTable.insert();
toInventDim.clear();
toInventDim.initValue();
toInventDim.wMSLocationId = inventJournalName.ApprtoWMSLocationId;
toInventDim.InventLocationId = inventJournalName.ApprtoLocationId;
toInventDim.InventSiteId      = inventJournalName.ApprtoSiteId;

tempInventDimTo.clear();
tempInventDimTo = InventDim::findOrCreate(toInventDim);
    // journal lines işle
    inventJournalTrans.initValue();
    inventjournaltrans.initFromInventJournalTable(inventJournalTable);
    inventJournalTrans.Voucher      = NumberSeq::newGetNum(InventParameters::numRefInventJournalVoucherId()).num();
    inventJournalTrans.ItemId       = "MyItem001";
    InventJournalTrans.initFromInventTable(Inventtable::find(InventJournalTrans.ItemId));
    inventJournalTrans.TransDate    = systemDateGet();
    inventJournalTrans.Qty          = -1;
    inventJournalTrans.InventDimId = tempInventDimto.inventDimId;
    // rezervasyon kontrolü
    if (!InventMoveMent::setAutoReserving(InventJournalTrans))
    {
        inventJournalTable.delete();
        return;
    }
    inventJournalTrans.insert();