/* * Electronic Logistics Management Information System (eLMIS) is a supply chain management system for health commodities in a developing country setting. * * Copyright (C) 2015 John Snow, Inc (JSI). This program was produced for the U.S. Agency for International Development (USAID). It was prepared under the USAID | DELIVER PROJECT, Task Order 4. * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.openlmis.report.mapper.lookup; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.openlmis.report.model.dto.ProductCategory; import org.openlmis.report.model.dto.ProductCategoryProductTree; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface ProductCategoryReportMapper { @Select("SELECT id, name, code , displayorder" + " FROM " + " product_categories order by name") List<ProductCategory> getAll(); @Select("SELECT distinct pc.id, pc.name, pc.code " + " FROM " + " product_categories pc " + " join program_products pp on pp.productcategoryid = pc.id " + " WHERE pp.programid = #{programId} and pp.active = true " + " order by name") List<ProductCategory> getForProgram(@Param("programId") int programId); @Select("SELECT distinct pc.id, pc.name, pc.code " + " FROM " + " product_categories pc " + " join program_products pp on pp.productcategoryid = pc.id " + " WHERE pp.programid = #{programId} and pp.active = true " + " order by name") List<ProductCategory> getForProgramUsingProgramProductCategory(@Param("programId") int programId); @Select("SELECT pp.programId As program_id, pp.productcategoryid AS category_id, p.id AS product_id, pc.name AS category, concat(p.primaryname ,' ', form.code ,' ', p.strength ,' ', du.code) as product, p.code as code, pc.displayOrder \n" + "FROM " + " products as p " + " join product_forms as form on form.id = p.formid " + " join dosage_units as du on du.id = p.dosageunitid " + " join program_products pp on pp.productId = p.id " + " join product_categories pc on pc.id = pp.productcategoryid " + " where pp.programId = #{programId} and pp.active = true " + " order by pc.displayOrder, product") List<ProductCategoryProductTree> getProductCategoryProductByProgramId(@Param("programId") int programId); }