
in.succinct.plugins.ecommerce.db.model.inventory.AdjustmentRequest Maven / Gradle / Ivy
The newest version!
package in.succinct.plugins.ecommerce.db.model.inventory;
import com.venky.core.util.ObjectUtil;
import com.venky.swf.db.annotations.column.IS_NULLABLE;
import com.venky.swf.db.annotations.column.ui.HIDDEN;
import com.venky.swf.db.annotations.column.validations.MinLength;
import com.venky.swf.db.annotations.model.EXPORTABLE;
import com.venky.swf.db.annotations.model.MENU;
import com.venky.swf.db.model.Model;
import com.venky.swf.db.model.io.ModelIOFactory;
import com.venky.swf.db.model.reflection.ModelReflector;
import com.venky.swf.integration.FormatHelper;
import in.succinct.plugins.ecommerce.db.model.attributes.AssetCode;
import in.succinct.plugins.ecommerce.db.model.catalog.Item;
import in.succinct.plugins.ecommerce.db.model.catalog.UnitOfMeasure;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@EXPORTABLE(false)
@MENU("Inventory")
public interface AdjustmentRequest extends Model {
@HIDDEN
public long getInventoryId();
public void setInventoryId(long id);
public Inventory getInventory();
public double getAdjustmentQuantity();
public void setAdjustmentQuantity(double auditQuantity);
@MinLength(1)
@IS_NULLABLE(false)
public String getComment();
public void setComment(String comment);
public static List adjust(FormatHelper helper) {
List adjustmentElements = helper.getArrayElements("AdjustmentRequest");
if (adjustmentElements.isEmpty()) {
T adjustmentElement = helper.getElementAttribute("AdjustmentRequest");
if (adjustmentElement != null) {
adjustmentElements.add(adjustmentElement);
}
}
List requests = new ArrayList<>();
ModelReflector ref = ModelReflector.instance(AdjustmentRequest.class);
for (T adjustmentElement : adjustmentElements) {
FormatHelper adjustmentElementHelper = FormatHelper.instance(adjustmentElement);
boolean newProduct = ref.getJdbcTypeHelper().getTypeRef(Boolean.class).getTypeConverter().valueOf(adjustmentElementHelper.getAttribute("NewProduct"));
T inventoryElement = adjustmentElementHelper.getElementAttribute("Inventory");
T skuElement = FormatHelper.instance(inventoryElement).getElementAttribute("Sku");
if (skuElement != null) {
FormatHelper skuHelper = FormatHelper.instance(skuElement);
T itemElement = skuHelper.getElementAttribute("Item");
if (itemElement != null){
FormatHelper itemHelper = FormatHelper.instance(itemElement);
T uomElement = skuHelper.getElementAttribute("PackagingUOM");
if (uomElement != null) {
UnitOfMeasure uom = ModelIOFactory.getReader(UnitOfMeasure.class, helper.getFormatClass()).read(uomElement);
uom.save();
} else if (ObjectUtil.isVoid(skuHelper.getAttribute("Name"))) {
skuHelper.setAttribute("Name", (String)itemHelper.getAttribute("Name"));
}
T assetCodeElement = itemHelper.getElementAttribute("AssetCode");
if (assetCodeElement != null && ObjectUtil.isVoid(FormatHelper.instance(assetCodeElement).getAttribute("Code"))) {
itemHelper.removeElementAttribute("AssetCode");
}
Item item = ModelIOFactory.getReader(Item.class, helper.getFormatClass()).read(itemElement);
item.save();
}
Sku sku = ModelIOFactory.getReader(Sku.class, helper.getFormatClass()).read(skuElement);
AssetCode assetCode = sku.getItem().getAssetCode();
if (assetCode != null && !assetCode.getReflector().isVoid(assetCode.getGstPct())) {
sku.setTaxRate(assetCode.getGstPct());
}
sku.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
sku.save();
}
Inventory inventory = ModelIOFactory.getReader(Inventory.class, helper.getFormatClass()).read(inventoryElement);
if (inventory.getRawRecord().isNewRecord()) {
inventory.save();//Ensure parent exists
}
AdjustmentRequest request = ModelIOFactory.getReader(AdjustmentRequest.class, helper.getFormatClass()).read(adjustmentElement);
request.setInventoryId(inventory.getId());
request.save();
requests.add(request);
}
return requests;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy