Ledger:
FiscalCalendars::checkModuleIsOpen(SysModule::Ledger, myTable.TransDate,FiscalCalendars::findPeriodByPeriodCodeDate(Ledger::fiscalCalendar(CompanyInfo::find().RecId),myTable.TransDate),false)
or
select firstOnly period
where transDate >= period.StartDate && transDate <= period.EndDate
exists join ledgerPeriod
where ledgerPeriod.FiscalCalendarPeriod == period.RecId &&
ledgerPeriod.Status != FiscalPeriodStatus::Open;
if (period.RecId != 0)
throw error("Fiscal period is closed!..");
Sales:
FiscalCalendars::checkModuleIsOpen(SysModule::Sales, CustInvoiceJour.InvoiceDate,FiscalCalendars::findPeriodByPeriodCodeDate(Ledger::fiscalCalendar(CompanyInfo::find().RecId),CustInvoiceJour.InvoiceDate),false)
Invent closing:
InventClosing::findClosingDate(endmth(InventJournalTrans.TransDate))
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
8 Ağustos 2017 Salı
9 Ağustos 2016 Salı
AXAPTA - 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;
}
or:
//http://daxtechies.blogspot.com/2013/03/to-find-stock-on-hand-in-ax-through-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;
}
or:
//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 - Add/update product
//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) //varianted product
{
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) //product
{
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) //varianted product
ecoResProd.createProduct().add(prodMaster);
if (_subType == EcoResProductSubtype::Product) //product
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();
}
}
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) //varianted product
{
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) //product
{
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) //varianted product
ecoResProd.createProduct().add(prodMaster);
if (_subType == EcoResProductSubtype::Product) //product
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();
}
}
20 Temmuz 2015 Pazartesi
AXAPTA - Remove or add invent reservation
You can add or remove reservation with this code which I learned from Volkan Şişman:
InventUpd_Reservation invUpdReservation;
...
//remove
invUpdReservation = InventUpd_Reservation::newInventDim(InventMovement::construct(invTrans,InventMovSubType::None),myInventDim,200,false);
invUpdReservation.updateNow();
...
//add
invUpdReservation = InventUpd_Reservation::newInventDim(InventMovement::construct(invTrans,InventMovSubType::None),myInventDim,400,false);
invUpdReservation.updateNow();
Or:
//add
InventUpd_Reservation::updateReserveBuffer(journalTrans, journalTrans.Qty);
//remove
InventUpd_Reservation::updateReserveBuffer(journalTrans, abs(journalTrans.Qty));
Or:
//add
InventUpd_Reservation::newInventDim(InventTrans.inventMovement(true),InventTrans.inventDim(),-InventTrans.qty,true).updateNow();
InventUpd_Reservation invUpdReservation;
...
//remove
invUpdReservation = InventUpd_Reservation::newInventDim(InventMovement::construct(invTrans,InventMovSubType::None),myInventDim,200,false);
invUpdReservation.updateNow();
...
//add
invUpdReservation = InventUpd_Reservation::newInventDim(InventMovement::construct(invTrans,InventMovSubType::None),myInventDim,400,false);
invUpdReservation.updateNow();
Or:
//add
InventUpd_Reservation::updateReserveBuffer(journalTrans, journalTrans.Qty);
//remove
InventUpd_Reservation::updateReserveBuffer(journalTrans, abs(journalTrans.Qty));
Or:
//add
InventUpd_Reservation::newInventDim(InventTrans.inventMovement(true),InventTrans.inventDim(),-InventTrans.qty,true).updateNow();
AXAPTA - Post invent journal which it's form open
If you want to post a record like this, AX will not let you post, with an error about record is using by another. This code part I learned from Volkan Şişman lets to post:
InventJournalCheckPost journalCheckPost;
JournalForm journalForm;
;
...
journalForm = JournalForm::fromArgs(args);
journalCheckPost = InventJournalCheckPost::newFromForm(args,journalForm);
journalForm.runbaseMainStart();
journalCheckPost.run();
journalForm.runbaseMainEnd(journalCheckPost,false);
InventJournalCheckPost journalCheckPost;
JournalForm journalForm;
;
...
journalForm = JournalForm::fromArgs(args);
journalCheckPost = InventJournalCheckPost::newFromForm(args,journalForm);
journalForm.runbaseMainStart();
journalCheckPost.run();
journalForm.runbaseMainEnd(journalCheckPost,false);
Etiketler:
another form,
AX,
AXAPTA,
invent,
inventjournal,
journal,
lock,
post
27 Aralık 2011 Salı
AXAPTA post invent journal
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())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();
return;
22 Aralık 2011 Perşembe
AXAPTA invent journal
When we were working with forms we just select InventJournalName and default parameters come. At working with code we have to put our parameters (or that is the way just I can found):
InventJournalTrans inventJournalTrans;
InventJournalTable inventJournalTable;
InventJournalName inventJournalName;
InventDim toInventDim;
InventDim tempInventDimTo;
;
// Process Journal Header
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;
// Process journal lines
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;
// reservation check
if (!InventMoveMent::setAutoReserving(InventJournalTrans))
{
inventJournalTable.delete();
return;
}
inventJournalTrans.insert();
InventJournalTable inventJournalTable;
InventJournalName inventJournalName;
InventDim toInventDim;
InventDim tempInventDimTo;
;
// Process Journal Header
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;
// Process journal lines
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;
// reservation check
if (!InventMoveMent::setAutoReserving(InventJournalTrans))
{
inventJournalTable.delete();
return;
}
Kaydol:
Kayıtlar (Atom)