
in.succinct.plugins.ecommerce.db.model.order.ManifestImpl Maven / Gradle / Ivy
The newest version!
package in.succinct.plugins.ecommerce.db.model.order;
import com.venky.core.util.ObjectUtil;
import com.venky.swf.db.annotations.column.IS_VIRTUAL;
import com.venky.swf.db.table.ModelImpl;
import com.venky.swf.plugins.background.core.TaskManager;
import com.venky.swf.sql.Conjunction;
import com.venky.swf.sql.Expression;
import com.venky.swf.sql.Operator;
import com.venky.swf.sql.Select;
import com.venky.swf.sql.parser.SQLExpressionParser.Or;
import in.succinct.plugins.ecommerce.agents.order.tasks.ship.ManifestShippingUpdatesTask;
import in.succinct.plugins.ecommerce.integration.fedex.TrackWebServiceClient;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class ManifestImpl extends ModelImpl{
public ManifestImpl(Manifest proxy){
super(proxy);
}
public void close(){
Manifest manifest = getProxy();
if (!manifest.isClosed()){
manifest.setClosed(true);
manifest.save();
}else {
TaskManager.instance().executeAsync(new ManifestShippingUpdatesTask(manifest.getId()), false);
}
}
public void track(){
if (getNumOrdersPendingDelivery() > 0) {
TrackWebServiceClient client = new TrackWebServiceClient(getProxy());
client.track();
}
}
Set orderIds = null;
public Set getOrderIdsPendingDelivery(){
if (orderIds == null){
orderIds = new HashSet<>();
Manifest manifest = getProxy();
Select s = new Select().from(OrderAttribute.class);
Expression where = new Expression(s.getPool(), Conjunction.AND);
where.add(new Expression(s.getPool(), "NAME", Operator.EQ, "manifest_number"));
where.add(new Expression(s.getPool(), "VALUE", Operator.EQ, manifest.getManifestNumber()));
s.where(where).add(" and exists ( select 1 from order_statuses where order_id = order_attributes.order_id and fulfillment_status = 'MANIFESTED' ) ");
List oas = s.execute();
oas.forEach(oa -> {
orderIds.add(oa.getOrderId());
});
}
return orderIds;
}
List orders = null;
public List getOrders(){
if (orders == null){
Set orderIds = getOrderIdsPendingDelivery();
if (orderIds.isEmpty()){
orders = new ArrayList<>();
}else {
Manifest manifest = getProxy();
orders = new Select().from(Order.class).where(new Expression(getReflector().getPool(), "ID", Operator.IN, orderIds.toArray())).execute();
for (Iterator i =orders.iterator(); i.hasNext() ; ){
Order order = i.next();
if (!ObjectUtil.equals(order.getAttribute("courier").getValue(), manifest.getPreferredCarrier().getName())){
i.remove();
}
}
}
}
return orders;
}
public int getNumOrdersPendingDelivery() {
return getOrderIdsPendingDelivery().size();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy