Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.erp.sls.bo.salesorder;
- import javax.persistence.NoResultException;
- import javax.persistence.Query;
- import org.jleaf.core.AbstractBusinessFunction;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.Dto;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.sls.SalesConstants;
- import org.jleaf.erp.sls.dao.SalesOrderBalanceItemDao;
- import org.jleaf.erp.sls.entity.SalesOrderBalanceItem;
- import org.jleaf.erp.sls.entity.SalesOrderItem;
- import org.jleaf.util.ValidationUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- /**
- * Is Sales Order Item Has Not Been Followed Up By So Id
- * @author Cong, Jul 6, 2017
- *
- * Bf ini digunakan untuk melakukan pengecekan apakah sebuah SO memiliki item yang sedang atau sudah pernah di lakukan
- * follow up oleh dokumen lain, atau tidak
- * jika di dapatkan item yang sedang atau sudah pernah di follow up, maka akan mengembalikan true, jika tidak ada maka false
- *
- */
- @Service
- @InfoIn(value = {
- @Info(name = "tenantId", description = "tenant id", type = Long.class),
- @Info(name = "soId", description = "SO id", type = Long.class)
- })
- @InfoOut(value = {
- @Info(name = "exists", description = "exists", type = Boolean.class, required = true)
- })
- public class IsSalesOrderItemHasNotBeenFollowedUpBySoId extends AbstractBusinessFunction implements BusinessFunction{
- @Autowired
- private SalesOrderBalanceItemDao salesOrderBalanceItemDao;
- @Override
- public String getDescription() {
- return "Is Sales Order Item Has Not Been Followed Up By So Id";
- }
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- ValidationUtil.valNumeric(inputDto, "tenantId");
- ValidationUtil.valNumeric(inputDto, "soId");
- Long tenantId = inputDto.getLong("tenantId");
- Long soId = inputDto.getLong("soId");
- Object resultQuery = null;
- boolean exists = false;
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT COUNT(A.so_item_id) AS count ")
- .add(" FROM ").add(SalesOrderBalanceItem.TABLE_NAME).add(" A ")
- .add(" INNER JOIN ").add(SalesOrderItem.TABLE_NAME).add(" B ").add(" ON A.so_item_id = B.so_item_id ")
- .add(" WHERE A.tenant_id = :tenantId ")
- .add(" AND B.so_id = :soId ")
- .add(" AND (A.status_item != :releaseStatus OR qty_dlv_int != 0 OR qty_return_int != 0 OR qty_cancel_int != 0 OR qty_add_int != 0 ) ");
- Query query = salesOrderBalanceItemDao.createNativeQuery(builder.toString());
- query.setParameter("tenantId", tenantId);
- query.setParameter("soId", soId);
- query.setParameter("releaseStatus", SalesConstants.RELEASED_TRANSACTION);
- try {
- resultQuery = query.getSingleResult();
- } catch (NoResultException e) {
- resultQuery = 0;
- }
- if (Long.valueOf(resultQuery.toString()) > 0) {
- exists = true;
- }
- return new Dto().put("exists", exists);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment