package com.gpc.server.report; // Java imports import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.TreeSet; import java.util.Vector; import org.apache.log4j.Logger; import com.gpc.backofficecommon.constants.schema.Sch_Customer; import com.gpc.backofficecommon.constants.schema.Sch_CustomerCustomPricing; import com.gpc.backofficecommon.constants.schema.Sch_CustomerPricingProfile; import com.gpc.backofficecommon.constants.schema.Sch_Employee; import com.gpc.backofficecommon.constants.schema.Sch_PricingProfile; import com.gpc.backofficecommon.constants.schema.Sch_RefBillingType; import com.gpc.backofficecommon.constants.schema.Sch_RefCurrencyRounding; import com.gpc.backofficecommon.constants.schema.Sch_RefNapaCatalogCategory; import com.gpc.backofficecommon.constants.schema.Sch_RefNapaCustomerCategory; import com.gpc.backofficecommon.constants.schema.Sch_StoreCategory; import com.gpc.backofficecommon.constants.schema.Sch_Tables; import com.gpc.backofficecommon.report.TsoPrintFormat; import com.gpc.backofficecommon.report.TsoReportBase; import com.gpc.backofficecommon.report.criteria.CustomPricingCriteria; import com.gpc.backofficecommon.report.criteria.TsiQuestionConstants; import com.gpc.backofficecommon.report.util.TsoReportColumnFormat; import com.gpc.backofficecommon.report.util.TsoReportColumnHeader; import com.gpc.backofficecommon.report.util.TsoReportCriteria; import com.gpc.backofficecommon.report.util.TsoReportHeader; import com.gpc.backofficecommon.report.util.TsoReportRowFormat; import com.gpc.common.ApplicationContext; import com.gpc.common.Profile; import com.gpc.common.ResourceBundleReader; import com.gpc.common.TsoConstant; import com.gpc.common.pattern.DatePatternFormatException; import com.gpc.common.pattern.FwoDatePattern; import com.gpc.common.pattern.FwoNumberPattern; import com.gpc.common.pattern.FwoPattern; import com.gpc.common.pattern.PatternFormatException; import com.gpc.common.pattern.PatternParseException; import com.gpc.common.report.PrintFormat; import com.gpc.server.ServerApplicationContext; import com.gpc.server.util.JDBCUtil; import com.gpc.server.util.ServerUtil; import com.gpc.valueobjects.profile.StoreProfileVO; import com.gpc.valueobjects.report.FwoRefReportRequest; import com.gpc.valueobjects.report.criteria.FwoQuestionAnswer; import com.gpc.valueobjects.report.criteria.FwoQuestionAnswerMap; /** *

Description: CLASS DESCRIPTION GOES HERE

* @author Copyright © 1999-2003, Genuine Parts Company, All Rights Reserved * @author croughton * @version 1.0 */ public class TsoReportCM_RPT050 extends TsoReportBase{ private static final Logger logger = Logger.getLogger(TsoReportCM_RPT050.class); protected final static String NAME = "RPT050"; protected final static String CUSTOMER_NUMBER = NAME + ".CUSTOMER_NUMBER"; protected final static String SALES_REP = NAME + ".SALES_REP"; protected final static String CUSTOMER_NAME = NAME + ".CUSTOMER_NAME"; protected final static String BILLING_TYPE = NAME + ".BILLING_TYPE"; protected final static String NAPA_CUST_CATEGORY = NAME + ".NAPA_CUST_CATEGORY"; protected final static String STORE_CATEGORY = NAME + ".STORE_CATEGORY"; protected final static String USUAL_PRICE = NAME + ".USUAL_PRICE"; protected final static String PRICING_PROFILE = NAME + ".PRICING_PROFILE"; protected final static String DISPLAY_PROFILE = NAME + ".DISPLAY_PROFILE"; protected final static String LINE = NAME + ".LINE"; protected final static String PART_NUMBER = NAME + ".PART_NUMBER"; protected final static String PRICE = NAME + ".PRICE"; protected final static String REPORTABLE = NAME + ".REPORTABLE"; protected final static String BEGIN_DATE = NAME + ".BEGIN_DATE"; protected final static String END_DATE = NAME + ".END_DATE"; protected final static String FIXED_PRICES = NAME + ".FIXED_PRICES"; protected final static String CUSTOM_PRICING = NAME + ".CUSTOM_PRICING"; protected final static String STORE_GROUP = NAME + ".STORE_GROUP"; protected final static String DEPT = NAME + ".DEPT"; protected final static String SUB_DEPT = NAME + ".SUB_DEPT"; protected final static String GROUP = NAME + ".GROUP"; protected final static String PART_PREFIX = NAME + ".PAST_PREFIX"; protected final static String CLASS = NAME + ".CLASS"; protected final static String STORE_DEPT = NAME + ".STORE_DEPT"; protected final static String PRICE_SHEET = NAME + ".PRICE_SHEET"; protected final static String PERCENT = NAME + ".PERCENT"; protected final static String ROUNDING_TYPE = NAME + ".ROUNDING_TYPE"; protected final static String NOTE_LINE = NAME + ".NOTE_LINE"; protected final static String CHARACTERS = NAME + ".CHARACTERS"; protected final static String INSTALLED_LIST_PRICING = NAME + ".INSTALLED_LIST_PRICING"; protected final static String CORE_PRICING = NAME + ".CORE_PRICING"; protected final static String NUMBER_OF_CUSTOMERS = NAME + ".NUMBER_OF_CUSTOMERS"; protected final static String PRICE_NOTATION1 = NAME + ".PRICE_NOTATION1"; protected final static String PRICE_NOTATION2 = NAME + ".PRICE_NOTATION2"; protected final static String ERROR_NOTATION1 = NAME + ".ERROR_NOTATION1"; protected final static String ERROR_NOTATION2 = NAME + ".ERROR_NOTATION2"; protected final static String ERROR_NOTATION3 = NAME + ".ERROR_NOTATION3"; protected final static String ERROR_NOTATION4 = NAME + ".ERROR_NOTATION4"; protected final static String ERROR_NOTATION5 = NAME + ".ERROR_NOTATION5"; protected final static String ERROR_NOTATION6 = NAME + ".ERROR_NOTATION6"; protected final static String ERROR_NOTATION7 = NAME + ".ERROR_NOTATION7"; protected final static String NUM_OF_CUSTOMERS = NAME + ".NUM_OF_CUSTOMERS"; protected final static String MTD_SALES = NAME + ".MTD_SALES"; protected final static String YTD_SALES = NAME + ".YTD_SALES"; protected final static String GP = NAME + ".GP"; protected final static String CP_YTD_SALES = NAME + ".CP_YTD_SALES"; protected final static String CP_YTD_GP = NAME + ".CP_YTD_GP"; protected final static String PROFILE_NUMBER = NAME + ".PROFILE_NUMBER"; protected final static String DESCRIPTION = NAME + ".DESCRIPTION"; protected final static String USUAL_PRICE_PPD = NAME + ".USUAL_PRICE_PPD"; protected final static String USUAL_MARKUP_PERCENT = NAME + ".USUAL_MARKUP_PERCENT"; protected final static String ROUND_USUAL = NAME + ".ROUND_USUAL"; private final static String BOTH = "B"; private final static String CUSTOMER_PRICING_ONLY = "C"; private final static String PRICING_PROFILE_ONLY = "P"; /** The Constant LANDED_PRICING. */ private final static String LANDED_PRICING = "L"; private final static int COL_TYPE1_SIZE = 9; private final static int COL_TYPE2_SIZE = 8; private final static int COL_TYPE3_SIZE = 18; private final static int COL_TYPE4_SIZE = 15; private final static int COL_TYPE5_SIZE = 8; private final static int COL_TYPE6_SIZE = 5; private final static int COL_TYPE7_SIZE = 16; private FwoNumberPattern m_patternDec; private FwoDatePattern m_patternDate; private Locale m_locale; private FwoRefReportRequest m_request; private TsoReportHeader m_rptHeader; private TsoReportRowFormat m_data1RowFormat; private TsoReportRowFormat m_data2RowFormat; private TsoReportRowFormat m_data3RowFormat; private TsoReportRowFormat m_data4RowFormat; private TsoReportRowFormat m_data5RowFormat; private TsoReportRowFormat m_data6RowFormat; private TsoReportRowFormat m_data7RowFormat; private TsoReportRowFormat pricingProfileHdrRowFormat; private String[] pricingProfilehdrValues; private TsoReportRowFormat m_noteFormat; private Object[] m_data1Array = new Object[COL_TYPE1_SIZE]; private Object[] m_data2Array = new Object[COL_TYPE2_SIZE]; private Object[] m_data3Array = new Object[COL_TYPE3_SIZE]; private Object[] m_data4Array = new Object[COL_TYPE4_SIZE]; private Object[] m_data5Array = new Object[COL_TYPE5_SIZE]; private Object[] m_data6Array = new Object[COL_TYPE6_SIZE]; private Object[] m_data7Array = new Object[COL_TYPE7_SIZE]; private TsoReportColumnHeader m_hdr1; private TsoReportColumnHeader m_hdr2; private TsoReportColumnHeader m_hdr3; private TsoReportColumnHeader m_hdr4; private TsoReportColumnHeader m_customPricingHdr; private FwoQuestionAnswerMap m_Map; private Integer m_loc; private boolean m_bIncludePriceNotes = false; private boolean m_bPrintSalesInfo = false; private static Map m_roundingCacheMap = Collections.synchronizedMap(new HashMap(10)); private PreparedStatement m_pStmt = null; private PreparedStatement m_prepStmtCP = null; private PreparedStatement m_prepStmtSI = null; private PreparedStatement m_prepStmtPPD = null; private boolean m_bPrintPricingProfileDetails = false; private Connection m_conn; private String m_noteLine; private String FIXED_PRICE_LBL; private String CUSTOM_PRICE_LBL; private String INSTALLED_PRICE_LBL; private String CORE_PRICE_LBL; private String MTD_SALES_LBL; private String MTD_SALES_GP_LBL; private String YTD_SALES_LBL; private String YTD_SALES_GP_LBL; boolean m_bFixedHeader = true; boolean m_bCustomHeader = true; boolean m_bInstalledHeader = true; boolean m_bCoreHeader = true; private boolean isPricingTypeAll = true; private boolean isPricingSheetTypeAll = true; private boolean isPricingProfileCustomDetails = true; private boolean isSalesmanAll = true; boolean m_bPricingProfileHeader = false; boolean isCustomerRangeSelected = false; boolean isPricingProfileRangeSelected = false; // To format number to two decimal places. NumberFormat decimalFormatter = NumberFormat.getInstance(); // This variable is set to true if store profile Currency Conversion Factor is non zero private boolean isLandedMode = false; // Holds pricing mode depending on selection criteria String pricingModeValue; private class DefaultFwoPattern extends FwoPattern { public String format(Object obj) throws PatternFormatException { return obj == null ? "" : obj.toString(); } public String format(Object obj, Locale inputLocale) throws PatternFormatException, NullPointerException { return obj == null ? "" : obj.toString(); } public Object parse(String str) throws PatternParseException {return null;} public Object parse(String str, Locale inputLocale) throws PatternParseException {return str;} protected void init() {} protected String preformatString(String str) {return str;} protected String postformatString(String str) {return str;} public String[] getEditMaskSpec(int maskLen) {return new String[0];} } protected void buildReport() { logger.info("> buildReport"); Statement stmt = null; Statement stmtCustomPricing = null; ResultSet rs = null; Statement stmtPricingProfile = null; ResultSet rsPricingProfile = null; int customerCount = 0; try { isLandedMode = ApplicationContext.getInstance().getProfile(Profile.SERVER, getReportRequest().getLOC().intValue()).getStoreProfile() .getCurrencyConversionFactor().doubleValue() > 0; initialize(); appendHeader(); String reportType = getReportType(); if(reportType.equals(BOTH)||reportType.equals(CUSTOMER_PRICING_ONLY)){ stmt = m_conn.createStatement(); stmtCustomPricing = m_conn.createStatement(); rs = stmt.executeQuery(getReportSQL()); String lastCustID = ""; String lastCustLine = ""; String firstPricingProfile = ""; String firstDisplayProfile = ""; TreeSet pricingProfiles = new TreeSet(); ArrayList pricingProfilesList = new ArrayList(); TreeSet displayProfiles = new TreeSet(); ArrayList displayProfilesList = new ArrayList(); while(rs.next()){ m_bFixedHeader = m_bCustomHeader = m_bInstalledHeader = m_bCoreHeader = true; if(rs.getString("CUSTOMER_ID").equals(lastCustID)) { // duplicate row String p = rs.getString("PRICING_PROFILE"); if (p != null && !firstPricingProfile.equals(p) && pricingProfiles.add(p)) pricingProfilesList.add(p); String d = rs.getString("DISPLAY_PROFILE"); if (d != null && !firstDisplayProfile.equals(d) && displayProfiles.add(d)) displayProfilesList.add(d); } else { if (lastCustLine.length() > 0) { appendText(lastCustLine); // print stored pricing & display profiles outputProfileCols(pricingProfilesList, displayProfilesList); /* * To display the Sales information ie., MTD/YTD * Sales and their respective GP percent for each * customer. */ if (m_bPrintSalesInfo) { appendLineBreak(); getSalesInfo(lastCustID); appendLineBreak(); } getCustomPricing(lastCustID); } lastCustID = rs.getString("CUSTOMER_ID"); lastCustLine = m_data1RowFormat.format(getMainData(rs,m_data1Array)); pricingProfiles.clear(); pricingProfilesList.clear(); displayProfiles.clear(); displayProfilesList.clear(); if (rs.getString("PRICING_PROFILE") != null) { firstPricingProfile = rs.getString("PRICING_PROFILE"); // don't include first one } else { firstPricingProfile = ""; } if (rs.getString("DISPLAY_PROFILE") != null) { firstDisplayProfile = rs.getString("DISPLAY_PROFILE"); // it's already in m_data1Array } else { firstDisplayProfile = ""; } customerCount++; } } // final customer if(lastCustLine.length() > 0) { appendText(lastCustLine); // print stored pricing & display profiles outputProfileCols(pricingProfilesList, displayProfilesList); /* * To display the Sales information ie., MTD/YTD Sales and their respective * GP percent for each customer. */ if (m_bPrintSalesInfo) { appendLineBreak(); getSalesInfo(lastCustID); appendLineBreak(); } getCustomPricing(lastCustID); } appendLine(filler(2) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI, NUM_OF_CUSTOMERS,m_locale) + " = " + customerCount); appendLineBreak(); } if (reportType.equals(BOTH) || reportType.equals(PRICING_PROFILE_ONLY) || (m_bPrintPricingProfileDetails && reportType.equals(CUSTOMER_PRICING_ONLY))) { if(!m_bPricingProfileHeader){ // Display pricing profile header appendText(pricingProfileHdrRowFormat.format(pricingProfilehdrValues)); appendText(pricingProfileHdrRowFormat.repeatFill(PrintFormat.UNDERLINE_CHAR)); } m_bPricingProfileHeader = true; stmtPricingProfile = m_conn.createStatement(); rsPricingProfile = stmtPricingProfile.executeQuery (getPricingProfileSQL()); String profileID = ""; while(rsPricingProfile.next()){ m_bFixedHeader = m_bCustomHeader = m_bInstalledHeader = m_bCoreHeader = true; profileID = rsPricingProfile.getString("PROFILE_NUMBER"); appendText(m_data6RowFormat.format(getPricingProfileData (rsPricingProfile, m_data6Array))); getPricingProfileDetail(profileID); } } } catch (SQLException e) { logger.error(e.getMessage(), e); } finally { JDBCUtil.closeResultSet(rsPricingProfile); JDBCUtil.closeStatement(stmtPricingProfile); JDBCUtil.closeResultSet(rs); JDBCUtil.closeStatement(stmt); JDBCUtil.closePreparedStatement(m_pStmt); JDBCUtil.closePreparedStatement(m_prepStmtCP); JDBCUtil.closePreparedStatement(m_prepStmtSI); JDBCUtil.closePreparedStatement(m_prepStmtPPD); if(m_conn != null){ ServerUtil.releaseConnection(m_conn); } } logger.info("< buildReport"); FwoQuestionAnswerMap qaMap = null; if (m_request.getReportCriteria() != null) { qaMap = m_request.getReportCriteria().getQuestionAnswerMap(); } else { qaMap = m_request.getRefReport().getDefaultQuestionAnswerMap(); } CustomPricingCriteria criteria = new CustomPricingCriteria(); StoreProfileVO storeVO = ApplicationContext.getInstance().getProfile(Profile.SERVER, getReportRequest().getLOC().intValue()).getStoreProfile(); TsoReportCriteria rptCriteria = new TsoReportCriteria(qaMap, criteria.getQuestionList(), getReportRequest().getLocale(), storeVO); appendLineBreak(); appendLineBreak(); appendText(rptCriteria.getText(), true); if(getLinesRemaining() < 13) { appendPageBreak(true); } else { appendLineBreak(); appendLineBreak(); } appendLine(filler(4) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE_NOTATION1,m_locale)); appendLine(filler(22) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE_NOTATION2,m_locale)); appendLine(filler(4) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION1,m_locale)); appendLine(filler(23) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION2,m_locale)); appendLine(filler(27) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION3,m_locale)); appendLineBreak(); appendLine(filler(23) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION4,m_locale)); appendLine(filler(27) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION5,m_locale)); appendLine(filler(27) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION6,m_locale)); appendLine(filler(27) + resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ERROR_NOTATION7,m_locale)); appendLineBreak(); // must add the footer to the end of the report; the footer is standard across all reports appendFooter(m_locale); } protected void setReportName() { m_reportName = NAME; } protected void setReportMaxWidth() { m_reportMaxWidth = LONG_WIDTH; } protected void appendHeader() { logger.info("> appendHeader"); // Build Header if (m_rptHeader == null) { //Replaced deprecated method getRefReportID m_rptHeader = new TsoReportHeader(NAME, m_request.getReportID(), m_request.getRefTimeFrameID(), m_request.getAccountingDay(), getPageCount(), getMaxWidth(), m_locale, ApplicationContext.getInstance().getProfile(Profile.SERVER, m_loc.intValue()).getStoreProfile()); } else { m_rptHeader.setPageNumber(getPageCount()); } appendLineBreak(); String reportType = getReportType(); appendText(m_rptHeader.getText()); appendLineBreak(); if(m_bPricingProfileHeader || reportType.equals(PRICING_PROFILE_ONLY)){ m_bPricingProfileHeader = true; // Display pricing profile header appendText(pricingProfileHdrRowFormat.format(pricingProfilehdrValues)); appendText(pricingProfileHdrRowFormat.repeatFill(PrintFormat.UNDERLINE_CHAR)); m_bCoreHeader = m_bCustomHeader = m_bFixedHeader = m_bInstalledHeader = true; }else{ appendText(m_hdr1.getText()); m_bCoreHeader = m_bCustomHeader = m_bFixedHeader = m_bInstalledHeader = true; } logger.info("< appendHeader"); } private final void initialize() throws SQLException{ logger.info("> initialize"); short RIGHT = TsoPrintFormat.RIGHT_JUSTIFIED; short CENTER = TsoPrintFormat.CENTER_JUSTIFIED; short LEFT = TsoPrintFormat.LEFT_JUSTIFIED; resourceBundleReader = ServerApplicationContext.getInstance().getResourceBundleReader(); m_request = (FwoRefReportRequest)getReportRequest(); m_locale = m_request.getLocale(); m_loc = m_request.getLOC(); if (m_locale == null) { m_locale = Locale.getDefault(); } m_conn = ServerUtil.getConnection(); m_Map = null; if (m_request.getReportCriteria() != null) { m_Map = m_request.getReportCriteria().getQuestionAnswerMap(); } else { m_Map = m_request.getRefReport().getDefaultQuestionAnswerMap(); } FwoQuestionAnswer pricingModeAnswer = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_PRICEMODE)); Vector answerValue = null; if (pricingModeAnswer != null) { answerValue = pricingModeAnswer.getAnswerValues(); } if (answerValue != null && !answerValue.isEmpty()) { pricingModeValue = answerValue.firstElement().toString(); } FwoQuestionAnswer qa = (FwoQuestionAnswer) m_Map.get(new Integer(TsiQuestionConstants.QUESTION_INCLUDEPRICINGNOTES)); String notes = "N"; if(qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null){ notes = qa.getAnswerValues().firstElement().toString().trim(); } m_bIncludePriceNotes = "Y".equalsIgnoreCase(notes); /* * Question-Answer mapping for new selection criteria "Print Sales Information" added for * Custom Pricing Report Improvement. */ qa = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_PRINTSALESINFORMATION)); String salesInfo = "N"; if (qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null) { salesInfo = qa.getAnswerValues().firstElement().toString().trim(); } m_bPrintSalesInfo = "Y".equalsIgnoreCase(salesInfo); qa = (FwoQuestionAnswer) m_Map.get(new Integer(TsiQuestionConstants.QUESTION_CUSTOMPRICINGTYPE)); if (qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null) { isPricingTypeAll = false; } qa = (FwoQuestionAnswer) m_Map.get(new Integer(TsiQuestionConstants.QUESTION_SALESREP)); if (qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null) { isSalesmanAll = false; } // Check whether price sheet is selected or not qa = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_PRICESHEET)); if (qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null) { isPricingSheetTypeAll = false; } qa = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_INCLUDE_PRICING_PROFILE_DETAILS)); String includePricingProfileDetails = "N"; if(qa != null && qa.getAnswerValues() != null && !qa.getAnswerValues().isEmpty() && qa.getAnswerValues().firstElement() != null){ includePricingProfileDetails = qa.getAnswerValues().firstElement() .toString().trim(); } m_bPrintPricingProfileDetails = "Y".equalsIgnoreCase( includePricingProfileDetails); qa = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_CUSTOMER)); if(qa.getAnswerType().equals("R")){ isCustomerRangeSelected = true; } qa = (FwoQuestionAnswer) m_Map.get(new Integer( TsiQuestionConstants.QUESTION_PRICING_PROFILE_NUMBER)); if(qa.getAnswerType().equals("R")){ isPricingProfileRangeSelected = true; } //pattern for 2 decimal place m_patternDec = (FwoNumberPattern)FwoPattern.getNumberPatternInstance( FwoNumberPattern.DECIMAL, m_locale); m_patternDec.setMinFractionDigits(2); m_patternDec.setMaxFractionDigits(2); //date pattern m_patternDate = (FwoDatePattern)FwoPattern.getDatePatternInstance(m_locale, getDateFormat()); m_noteLine = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,NOTE_LINE,m_locale); FIXED_PRICE_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,FIXED_PRICES,m_locale); CUSTOM_PRICE_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CUSTOM_PRICING,m_locale); INSTALLED_PRICE_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,INSTALLED_LIST_PRICING,m_locale); CORE_PRICE_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CORE_PRICING,m_locale); /* * Fetching the Headers/Labels for Sales information ie., MTD Sales = $, YTD Sales = $, * and their respective GP labels ie., GP = , from the properties file. */ MTD_SALES_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,MTD_SALES,m_locale); MTD_SALES_GP_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,GP,m_locale); YTD_SALES_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,YTD_SALES,m_locale); YTD_SALES_GP_LBL = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,GP,m_locale); TsoReportColumnFormat[] notesFormat = new TsoReportColumnFormat[2]; notesFormat[0] = new TsoReportColumnFormat(13,LEFT,false,filler(1)); notesFormat[1] = new TsoReportColumnFormat(90,LEFT,false,""); m_noteFormat = new TsoReportRowFormat(notesFormat); TsoReportColumnFormat[] hdr1ColFormats = new TsoReportColumnFormat[9]; hdr1ColFormats[0] = new TsoReportColumnFormat(8,CENTER,false,filler(2)); hdr1ColFormats[1] = new TsoReportColumnFormat(6,CENTER,false,filler(2)); hdr1ColFormats[2] = new TsoReportColumnFormat(30,CENTER,false,filler(2)); hdr1ColFormats[3] = new TsoReportColumnFormat(10,CENTER,false,filler(2)); hdr1ColFormats[4] = new TsoReportColumnFormat(28,CENTER,false,filler(1)); hdr1ColFormats[5] = new TsoReportColumnFormat(14,CENTER,false,filler(1)); hdr1ColFormats[6] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); hdr1ColFormats[7] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); hdr1ColFormats[8] = new TsoReportColumnFormat(8,CENTER,false,""); TsoReportRowFormat hdr1RowFormat = new TsoReportRowFormat(hdr1ColFormats); // To Display Pricing Profile Header TsoReportColumnFormat[] pricingProfileHdrColFormats = new TsoReportColumnFormat[5]; pricingProfileHdrColFormats[0] = new TsoReportColumnFormat (14,CENTER,false,filler(8));//Profile Number pricingProfileHdrColFormats[1] = new TsoReportColumnFormat (50,CENTER,false,filler(8));//Description pricingProfileHdrColFormats[2] = new TsoReportColumnFormat (11,CENTER,false,filler(6));//Usaual Price pricingProfileHdrColFormats[3] = new TsoReportColumnFormat (14,CENTER,false,filler(8));//Usaual Mark up % pricingProfileHdrColFormats[4] = new TsoReportColumnFormat (11,CENTER,false,filler(2)); //Round Usual pricingProfileHdrRowFormat = new TsoReportRowFormat(pricingProfileHdrColFormats); TsoReportColumnFormat[] data1Col = new TsoReportColumnFormat[9]; data1Col[0] = new TsoReportColumnFormat(8,RIGHT,false,filler(2)); data1Col[1] = new TsoReportColumnFormat(6,RIGHT,false,filler(2)); data1Col[2] = new TsoReportColumnFormat(30,LEFT,false,filler(2)); data1Col[3] = new TsoReportColumnFormat(10,LEFT,false,filler(2)); data1Col[4] = new TsoReportColumnFormat(28,LEFT,false,filler(1)); data1Col[5] = new TsoReportColumnFormat(14,LEFT,false,filler(1)); data1Col[6] = new TsoReportColumnFormat(8,LEFT,false,filler(1)); data1Col[7] = new TsoReportColumnFormat(8,RIGHT,false,filler(1), new DefaultFwoPattern()); data1Col[8] = new TsoReportColumnFormat(8,RIGHT,false,"", new DefaultFwoPattern()); m_data1RowFormat = new TsoReportRowFormat(data1Col); // To Display Pricing Profile Header TsoReportColumnFormat[] pricingProfiledataCol = new TsoReportColumnFormat[5]; pricingProfiledataCol[0] = new TsoReportColumnFormat (14,RIGHT,false,filler(8));//Profile Number pricingProfiledataCol[1] = new TsoReportColumnFormat (50,LEFT,false,filler(8));//Description pricingProfiledataCol[2] = new TsoReportColumnFormat (11,LEFT,false,filler(6));//Usaual Price pricingProfiledataCol[3] = new TsoReportColumnFormat (14,RIGHT,false,filler(8));//Usaual Mark up % pricingProfiledataCol[4] = new TsoReportColumnFormat (11,LEFT,false,filler(2));//Round Usual m_data6RowFormat = new TsoReportRowFormat(pricingProfiledataCol); TsoReportColumnFormat[] hdr2ColFormats = new TsoReportColumnFormat[6]; hdr2ColFormats[0] = new TsoReportColumnFormat(5,CENTER,false,filler(3)); hdr2ColFormats[1] = new TsoReportColumnFormat(26,CENTER,false,filler(11)); hdr2ColFormats[2] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); hdr2ColFormats[3] = new TsoReportColumnFormat(2,CENTER,false,filler(11)); hdr2ColFormats[4] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); hdr2ColFormats[5] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); TsoReportRowFormat hdr2RowFormat = new TsoReportRowFormat(hdr2ColFormats); hdr2RowFormat.setIndent(42); TsoReportColumnFormat[] data2Col = new TsoReportColumnFormat[COL_TYPE2_SIZE]; data2Col[0] = new TsoReportColumnFormat(41,LEFT,false,filler(1)); data2Col[1] = new TsoReportColumnFormat(5,LEFT,false,filler(3)); data2Col[2] = new TsoReportColumnFormat(26,LEFT,false,filler(11)); data2Col[3] = new TsoReportColumnFormat(8,CENTER,false,filler(1),m_patternDec); data2Col[4] = new TsoReportColumnFormat(2,CENTER,false,filler(11)); data2Col[5] = new TsoReportColumnFormat(10,LEFT,false,filler(1),m_patternDate); //Bug No. 18457 the following line is modified to get the space between the end date and error notations. data2Col[6] = new TsoReportColumnFormat(10,LEFT,false," ",m_patternDate); data2Col[7] = new TsoReportColumnFormat(1,LEFT,false,""); m_data2RowFormat = new TsoReportRowFormat(data2Col); TsoReportColumnFormat[] customPricingHdrColFormats = new TsoReportColumnFormat[14]; customPricingHdrColFormats[0] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingHdrColFormats[1] = new TsoReportColumnFormat (8,CENTER,false,filler(1)); customPricingHdrColFormats[2] = new TsoReportColumnFormat (9,LEFT,false,filler(1)); customPricingHdrColFormats[3] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingHdrColFormats[4] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingHdrColFormats[5] = new TsoReportColumnFormat (12,CENTER,false,filler(1)); customPricingHdrColFormats[6] = new TsoReportColumnFormat (3,LEFT,false,filler(1)); customPricingHdrColFormats[7] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingHdrColFormats[8] = new TsoReportColumnFormat (5,CENTER,false,filler(1)); customPricingHdrColFormats[9] = new TsoReportColumnFormat (8,LEFT,false,filler(1)); customPricingHdrColFormats[10] = new TsoReportColumnFormat (2,CENTER,false,filler(1)); customPricingHdrColFormats[11] = new TsoReportColumnFormat (9,CENTER,false,filler(1)); customPricingHdrColFormats[12] = new TsoReportColumnFormat (10,CENTER,false,filler(1)); customPricingHdrColFormats[13] = new TsoReportColumnFormat (10,CENTER,false,filler(1)); TsoReportRowFormat customPricingRowFormat = new TsoReportRowFormat(customPricingHdrColFormats); customPricingRowFormat.setIndent(18); TsoReportColumnFormat[] customPricingDataCol = new TsoReportColumnFormat[COL_TYPE7_SIZE]; customPricingDataCol[0] = new TsoReportColumnFormat (17,LEFT,false,filler(1)); customPricingDataCol[1] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingDataCol[2] = new TsoReportColumnFormat (8,LEFT,false,filler(1)); customPricingDataCol[3] = new TsoReportColumnFormat (9,LEFT,false,filler(1)); customPricingDataCol[4] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingDataCol[5] = new TsoReportColumnFormat (5,LEFT,false,filler(1)); customPricingDataCol[6] = new TsoReportColumnFormat (12,LEFT,false,filler(1)); customPricingDataCol[7] = new TsoReportColumnFormat (3,LEFT,false,filler(1)); customPricingDataCol[8] = new TsoReportColumnFormat (5,CENTER,false,filler(1)); customPricingDataCol[9] = new TsoReportColumnFormat (5,CENTER,false,filler(1)); customPricingDataCol[10] = new TsoReportColumnFormat (8,CENTER,false,filler(1),m_patternDec); customPricingDataCol[11] = new TsoReportColumnFormat (2,CENTER,false,filler(1)); customPricingDataCol[12] = new TsoReportColumnFormat (9,CENTER,false,filler(1)); customPricingDataCol[13] = new TsoReportColumnFormat (10,LEFT,false,filler(1),m_patternDate); //Bug No. 18457 the following line is modified to get the space between the end date and error notations. customPricingDataCol[14] = new TsoReportColumnFormat (10,LEFT,false," ",m_patternDate); customPricingDataCol[15] = new TsoReportColumnFormat (2,LEFT,false,""); m_data7RowFormat = new TsoReportRowFormat(customPricingDataCol); TsoReportColumnFormat[] hdr3ColFormats = new TsoReportColumnFormat[16]; // CR index Changed hdr3ColFormats[0] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); hdr3ColFormats[1] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr3ColFormats[2] = new TsoReportColumnFormat(8,LEFT,false,filler(1)); hdr3ColFormats[3] = new TsoReportColumnFormat(4,LEFT,false,filler(1)); hdr3ColFormats[4] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); hdr3ColFormats[5] = new TsoReportColumnFormat(12,CENTER,false,filler(1)); hdr3ColFormats[6] = new TsoReportColumnFormat(3,LEFT,false,filler(1)); hdr3ColFormats[7] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); hdr3ColFormats[8] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr3ColFormats[9] = new TsoReportColumnFormat(8,LEFT,false,filler(1)); hdr3ColFormats[10] = new TsoReportColumnFormat(2,CENTER,false,filler(1)); hdr3ColFormats[11] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); hdr3ColFormats[12] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); hdr3ColFormats[13] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); /* * If "Print Sales Information" is selected, * add "YTD Sales" and "GP %" headers in custom pricing section. */ if (m_bPrintSalesInfo) { hdr3ColFormats[14] = new TsoReportColumnFormat (14,CENTER,false,filler(1)); hdr3ColFormats[15] = new TsoReportColumnFormat (6,CENTER,false,filler(1)); } else{ hdr3ColFormats[14] = new TsoReportColumnFormat(0,CENTER,false,""); hdr3ColFormats[15] = new TsoReportColumnFormat(0,CENTER,false,""); } TsoReportRowFormat hdr3RowFormat = new TsoReportRowFormat(hdr3ColFormats); hdr3RowFormat.setIndent(4); TsoReportColumnFormat[] data3Col = new TsoReportColumnFormat[COL_TYPE3_SIZE]; data3Col[0] = new TsoReportColumnFormat(3,LEFT,false,filler(1)); data3Col[1] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data3Col[2] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data3Col[3] = new TsoReportColumnFormat(8,LEFT,false,filler(1)); data3Col[4] = new TsoReportColumnFormat(4,LEFT,false,filler(1)); data3Col[5] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data3Col[6] = new TsoReportColumnFormat(12,LEFT,false,filler(1)); data3Col[7] = new TsoReportColumnFormat(3,LEFT,false,filler(1)); data3Col[8] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); data3Col[9] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); data3Col[10] = new TsoReportColumnFormat(8,CENTER,false,filler(1),m_patternDec); data3Col[11] = new TsoReportColumnFormat(2,CENTER,false,filler(1)); data3Col[12] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); data3Col[13] = new TsoReportColumnFormat(10,LEFT,false,filler(1),m_patternDate); //Bug No. 18457 the following line is modified to get the space between the end date and error notations. data3Col[14] = new TsoReportColumnFormat(10,LEFT,false," ",m_patternDate); /* * If "Print Sales Information" is selected, * allocate space for "YTD Sales" and "GP %" values in custom pricing section. */ if (m_bPrintSalesInfo) { data3Col[15] = new TsoReportColumnFormat(14,RIGHT,false,filler(1)); data3Col[16] = new TsoReportColumnFormat(6,RIGHT,false,filler(1)); } else { data3Col[15] = new TsoReportColumnFormat(0,RIGHT,false,""); data3Col[16] = new TsoReportColumnFormat(0,RIGHT,false,""); } data3Col[17] = new TsoReportColumnFormat(2,LEFT,false,""); m_data3RowFormat = new TsoReportRowFormat(data3Col); TsoReportColumnFormat[] hdr4ColFormats = new TsoReportColumnFormat[13]; hdr4ColFormats[0] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr4ColFormats[1] = new TsoReportColumnFormat(8,CENTER,false,filler(1)); hdr4ColFormats[2] = new TsoReportColumnFormat(9,CENTER,false,filler(1)); hdr4ColFormats[3] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr4ColFormats[4] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr4ColFormats[5] = new TsoReportColumnFormat(12,CENTER,false,filler(1)); hdr4ColFormats[6] = new TsoReportColumnFormat(3,CENTER,false,filler(1)); hdr4ColFormats[7] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr4ColFormats[8] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); hdr4ColFormats[9] = new TsoReportColumnFormat(8,CENTER,false,filler(4)); hdr4ColFormats[10] = new TsoReportColumnFormat(9,CENTER,false,filler(1)); hdr4ColFormats[11] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); hdr4ColFormats[12] = new TsoReportColumnFormat(10,CENTER,false,filler(1)); TsoReportRowFormat hdr4RowFormat = new TsoReportRowFormat(hdr4ColFormats); hdr4RowFormat.setIndent(18); TsoReportColumnFormat[] data4Col = new TsoReportColumnFormat[COL_TYPE4_SIZE]; data4Col[0] = new TsoReportColumnFormat(17,LEFT,false,filler(1)); data4Col[1] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data4Col[2] = new TsoReportColumnFormat(8,LEFT,false,filler(1)); data4Col[3] = new TsoReportColumnFormat(9,LEFT,false,filler(1)); data4Col[4] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data4Col[5] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data4Col[6] = new TsoReportColumnFormat(12,LEFT,false,filler(1)); data4Col[7] = new TsoReportColumnFormat(3,LEFT,false,filler(1)); data4Col[8] = new TsoReportColumnFormat(5,LEFT,false,filler(1)); data4Col[9] = new TsoReportColumnFormat(5,CENTER,false,filler(1)); data4Col[10] = new TsoReportColumnFormat(8,CENTER,false,filler(4),m_patternDec); data4Col[11] = new TsoReportColumnFormat(9,CENTER,false,filler(1)); data4Col[12] = new TsoReportColumnFormat(10,LEFT,false,filler(1),m_patternDate); //Bug No. 18457 the following line is modified to get the space between the end date and error notations. data4Col[13] = new TsoReportColumnFormat(10,LEFT,false," ",m_patternDate); data4Col[14] = new TsoReportColumnFormat(3,LEFT,false," "); m_data4RowFormat = new TsoReportRowFormat(data4Col); /* * Formatting both the headers and data fields for sales information of every customer */ TsoReportColumnFormat[] data5Col = new TsoReportColumnFormat[COL_TYPE5_SIZE]; data5Col[0] = new TsoReportColumnFormat(12,CENTER,false,filler(0));// Header MTD Sales = $ data5Col[1] = new TsoReportColumnFormat(7,RIGHT,false,filler(6));// MTD Sales data data5Col[2] = new TsoReportColumnFormat(4,CENTER,false,filler(1));// Header GP = data5Col[3] = new TsoReportColumnFormat(6,RIGHT,false,filler(21));// GP data data5Col[4] = new TsoReportColumnFormat(12,CENTER,false,filler(0));// Header YTD Sales = $ data5Col[5] = new TsoReportColumnFormat(7,RIGHT,false,filler(6));// YTD Sales data data5Col[6] = new TsoReportColumnFormat(4,CENTER,false,filler(1));// Header GP = data5Col[7] = new TsoReportColumnFormat(6,RIGHT,false,filler(1));// GP data m_data5RowFormat = new TsoReportRowFormat(data5Col); m_data5RowFormat.setIndent(19); String[] hdr1Values = new String[9]; hdr1Values[0] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CUSTOMER_NUMBER,m_locale); hdr1Values[1] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,SALES_REP,m_locale); hdr1Values[2] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CUSTOMER_NAME,m_locale); hdr1Values[3] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,BILLING_TYPE,m_locale); hdr1Values[4] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,NAPA_CUST_CATEGORY,m_locale); hdr1Values[5] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_CATEGORY,m_locale); hdr1Values[6] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,USUAL_PRICE,m_locale); hdr1Values[7] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICING_PROFILE,m_locale); hdr1Values[8] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,DISPLAY_PROFILE,m_locale); // To Display Pricing Profile Header pricingProfilehdrValues = new String[5]; pricingProfilehdrValues[0] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,PROFILE_NUMBER,m_locale); pricingProfilehdrValues[1] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,DESCRIPTION,m_locale); pricingProfilehdrValues[2] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,USUAL_PRICE_PPD,m_locale); pricingProfilehdrValues[3] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,USUAL_MARKUP_PERCENT,m_locale); pricingProfilehdrValues[4] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,ROUND_USUAL,m_locale); String[] hdr2Values = new String[6]; hdr2Values[0] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,LINE,m_locale); hdr2Values[1] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PART_NUMBER,m_locale); hdr2Values[2] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE,m_locale); hdr2Values[3] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,REPORTABLE,m_locale); hdr2Values[4] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,BEGIN_DATE,m_locale); hdr2Values[5] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,END_DATE,m_locale); String[] customPricingProfileValues = new String[14]; customPricingProfileValues[0] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_GROUP,m_locale); customPricingProfileValues[1] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,DEPT,m_locale); customPricingProfileValues[2] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,SUB_DEPT,m_locale); customPricingProfileValues[3] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,LINE,m_locale); customPricingProfileValues[4] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,GROUP,m_locale); customPricingProfileValues[5] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PART_PREFIX,m_locale); customPricingProfileValues[6] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CLASS,m_locale); customPricingProfileValues[7] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_DEPT,m_locale); customPricingProfileValues[8] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE_SHEET,m_locale); customPricingProfileValues[9] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PERCENT,m_locale); customPricingProfileValues[10] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,REPORTABLE,m_locale); customPricingProfileValues[11] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ROUNDING_TYPE,m_locale); customPricingProfileValues[12] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,BEGIN_DATE,m_locale); customPricingProfileValues[13] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,END_DATE,m_locale); String[] hdr3Values = new String[16]; hdr3Values[0] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_GROUP,m_locale); hdr3Values[1] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,DEPT,m_locale); hdr3Values[2] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,SUB_DEPT,m_locale); hdr3Values[3] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,LINE,m_locale); hdr3Values[4] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,GROUP,m_locale); hdr3Values[5] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PART_PREFIX,m_locale); hdr3Values[6] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CLASS,m_locale); hdr3Values[7] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_DEPT,m_locale); hdr3Values[8] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE_SHEET,m_locale); hdr3Values[9] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PERCENT,m_locale); hdr3Values[10] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,REPORTABLE,m_locale); hdr3Values[11] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ROUNDING_TYPE,m_locale); hdr3Values[12] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,BEGIN_DATE,m_locale); hdr3Values[13] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,END_DATE,m_locale); /* * Added two columns YTD Sales and GP percent for Custom Pricing Report Improvement. * Fetching the header labels for the two newly added columns under Custom Pricing section * from the properties file. */ if (m_bPrintSalesInfo) { hdr3Values[14] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,CP_YTD_SALES,m_locale); hdr3Values[15] = resourceBundleReader.getLocalizedText (ResourceBundleReader.UI,CP_YTD_GP,m_locale); }else{ hdr3Values[14] = ""; hdr3Values[15] = ""; } String[] hdr4Values = new String[13]; hdr4Values[0] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_GROUP,m_locale); hdr4Values[1] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,DEPT,m_locale); hdr4Values[2] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,SUB_DEPT,m_locale); hdr4Values[3] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,LINE,m_locale); hdr4Values[4] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,GROUP,m_locale); hdr4Values[5] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PART_PREFIX,m_locale); hdr4Values[6] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,CLASS,m_locale); hdr4Values[7] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,STORE_DEPT,m_locale); hdr4Values[8] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PRICE_SHEET,m_locale); hdr4Values[9] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,PERCENT,m_locale); hdr4Values[10] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,ROUNDING_TYPE,m_locale); hdr4Values[11] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,BEGIN_DATE,m_locale); hdr4Values[12] = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI,END_DATE,m_locale); m_hdr1 = new TsoReportColumnHeader(hdr1Values,hdr1RowFormat); m_hdr2 = new TsoReportColumnHeader(hdr2Values,hdr2RowFormat); m_hdr3 = new TsoReportColumnHeader(hdr3Values,hdr3RowFormat); m_hdr4 = new TsoReportColumnHeader(hdr4Values,hdr4RowFormat); m_customPricingHdr = new TsoReportColumnHeader (customPricingProfileValues,customPricingRowFormat); logger.info("< initialize"); } private String getReportSQL(){ StringBuffer sb = new StringBuffer(). append("SELECT ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.ID) .append(" AS CUSTOMER_ID,") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.CUST_NUMBER) .append(" AS CUSTOMER_NUMBER, ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.NAME) .append(" AS CUSTOMER_NAME, ") .append("(IFNULL (R." + Sch_CustomerPricingProfile.CUSTOMER_ID + ", ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.USUAL_REF_PRICE_SHEET_CD + " + '( ' + ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.USUAL_PRICE_REF_CURRENCY_ROUNDING_CD + " + ' )',") .append(" (SELECT " + Sch_Tables.PRICING_PROFILE + "." + Sch_PricingProfile.USUAL_REF_PRICE_SHEET_CD + " + '( ' + ") .append(Sch_Tables.PRICING_PROFILE + "." + Sch_PricingProfile.USUAL_PRICE_REF_CURRENCY_ROUNDING_CD + " + ' )' ") .append("FROM "+ Sch_Tables.PRICING_PROFILE + ", " + Sch_Tables.CUSTOMER_PRICING_PROFILE + " CPP ") .append(" WHERE " + Sch_Tables.PRICING_PROFILE + "." + Sch_PricingProfile.ID + " = ") .append("CPP." + Sch_CustomerPricingProfile.PRICING_PROFILE_ID) .append(" AND CPP." + Sch_CustomerPricingProfile.REF_CUSTOMER_PRICING_PROFILE_TYPE_CD + " = 'R'") .append(" AND CPP." + Sch_CustomerPricingProfile.CUSTOMER_ID + " = R." + Sch_CustomerPricingProfile.CUSTOMER_ID) .append(" AND CPP." + Sch_CustomerPricingProfile.LOC + " = R." + Sch_CustomerPricingProfile.LOC) .append(" AND CPP." + Sch_CustomerPricingProfile.PRIORITY + " = (SELECT MIN(CPP2." + Sch_CustomerPricingProfile.PRIORITY + ") ") .append("FROM " + Sch_Tables.CUSTOMER_PRICING_PROFILE + " CPP2 ") .append(" WHERE CPP2." + Sch_CustomerPricingProfile.CUSTOMER_ID + " = CPP." + Sch_CustomerPricingProfile.CUSTOMER_ID) .append(" AND CPP2." + Sch_CustomerPricingProfile.LOC + " = CPP." + Sch_CustomerPricingProfile.LOC) .append(" AND CPP2." + Sch_CustomerPricingProfile.REF_CUSTOMER_PRICING_PROFILE_TYPE_CD + " = 'R'") .append(")))) AS USUAL_PRICE, ") .append(Sch_Tables.EMPLOYEE + "." + Sch_Employee.EMPLOYEE_NUM) .append(" AS SALES_REP, ") .append(Sch_Tables.REF_BILLING_TYPE + "." + Sch_RefBillingType.DESCRIPTION) .append(" AS BILLING_TYPE, ") .append("(IF (" + Sch_Tables.CUSTOMER + "." + Sch_Customer.REF_NAPA_CUSTOMER_CATEGORY_ID + " IS NOT NULL) THEN ") .append("(CAST("+ Sch_Tables.CUSTOMER + "." + Sch_Customer.REF_NAPA_CUSTOMER_CATEGORY_ID + " AS CHAR(3)) + '-' + ") .append("(SELECT " + Sch_Tables.REF_NAPA_CUSTOMER_CATEGORY + "." + Sch_RefNapaCatalogCategory.DESCRIPTION) .append(" FROM " + Sch_Tables.REF_NAPA_CUSTOMER_CATEGORY + " WHERE ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.REF_NAPA_CUSTOMER_CATEGORY_ID + " = ") .append(Sch_Tables.REF_NAPA_CUSTOMER_CATEGORY + "." + Sch_RefNapaCustomerCategory.ID + "))" ) .append("ELSE '' ENDIF) AS 'NAPA_CUST_CAT',") .append("(IF (" + Sch_Tables.CUSTOMER + "." + Sch_Customer.STORE_CATEGORY_ID + " IS NOT NULL) THEN ") .append("(CAST(" + Sch_Tables.CUSTOMER + "." + Sch_Customer.STORE_CATEGORY_ID + " AS CHAR) + '-' + ") .append("(SELECT " + Sch_Tables.STORE_CATEGORY + "." + Sch_StoreCategory.DESCRIPTION + " FROM ") .append(Sch_Tables.STORE_CATEGORY + " WHERE " + Sch_Tables.CUSTOMER + "." + Sch_Customer.STORE_CATEGORY_ID) .append(" = " + Sch_Tables.STORE_CATEGORY + "." + Sch_StoreCategory.ID + " AND ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.LOC + " = ") .append(Sch_Tables.STORE_CATEGORY + "." + Sch_StoreCategory.LOC) .append(")) ELSE '' ENDIF) AS 'STORE_CATEGORY',") .append("R." + Sch_CustomerPricingProfile.PRICING_PROFILE_ID) .append(" AS PRICING_PROFILE, ") .append("L." + Sch_CustomerPricingProfile.PRICING_PROFILE_ID) .append(" AS DISPLAY_PROFILE ") .append(" FROM ") .append(Sch_Tables.CUSTOMER ) .append(" INNER JOIN "+Sch_Tables.EMPLOYEE) .append(" ON " +Sch_Tables.CUSTOMER + "." + Sch_Customer.SALESMAN_EMPLOYEE_ID + " = " + Sch_Tables.EMPLOYEE + "." + Sch_Employee.ID) .append(" INNER JOIN "+Sch_Tables.REF_BILLING_TYPE) .append(" ON CUSTOMER.REF_BILLING_TYPE_CD = REF_BILLING_TYPE.CD") .append(" LEFT OUTER JOIN " + Sch_Tables.CUSTOMER_PRICING_PROFILE + " L ON L.") .append(Sch_CustomerPricingProfile.CUSTOMER_ID + " = " + Sch_Tables.CUSTOMER + "." + Sch_Customer.ID) .append(" AND L." + Sch_CustomerPricingProfile.LOC + " = " + Sch_Tables.CUSTOMER + "." + Sch_Customer.LOC) .append(" AND L." + Sch_CustomerPricingProfile.REF_CUSTOMER_PRICING_PROFILE_TYPE_CD + " = 'L' ") .append(" LEFT OUTER JOIN " + Sch_Tables.CUSTOMER_PRICING_PROFILE + " R ON R.") .append(Sch_CustomerPricingProfile.CUSTOMER_ID + " = " + Sch_Tables.CUSTOMER + "." + Sch_Customer.ID) .append(" AND R." + Sch_CustomerPricingProfile.LOC + " = " + Sch_Tables.CUSTOMER + "." + Sch_Customer.LOC) .append(" AND R." + Sch_CustomerPricingProfile.REF_CUSTOMER_PRICING_PROFILE_TYPE_CD + " = 'R' ") .append(" WHERE ") .append(Sch_Tables.CUSTOMER + "." + Sch_Customer.LOC + " = " + m_loc) .append(getMainDataQuestionAnswerSQL()); if (sb.toString().indexOf("ORDER") < 0) { FwoQuestionAnswer qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer( new Integer(TsiQuestionConstants.QUESTION_SORT)); if(qa == null || qa.getAnswerValues().isEmpty() || qa.getAnswerValues().firstElement().toString().indexOf("3") > -1){ sb.append(" ORDER BY CUSTOMER_NUMBER ASC, R.PRIORITY ASC, L.PRIORITY ASC"); } else { sb.append(" ORDER BY CUSTOMER_NAME ASC, CUSTOMER_NUMBER ASC, R.PRIORITY ASC, ") .append("L.PRIORITY ASC"); } } logger.debug("Report SQL = "+sb.toString()); return sb.toString(); } private ArrayList getAnswerBeginEnd(FwoQuestionAnswer qa) { String answers = null; String begin = null; String end = null; if (qa != null) { if (qa.getAnswerType().equals(FwoQuestionAnswer.ANSWER_TYPE_LIST)) { //for list if (qa.getDataType().equals(FwoQuestionAnswer.DATA_TYPE_NUM)) { answers = qa.getAnswerDelimitedList(false, false, ","); // no quotes and no uppercase } else { // alphanumeric & date types answers = qa.getAnswerDelimitedList(true, true, ","); // quotes and uppercase } if(answers != null && answers.trim().equals("''") || answers.trim().length() == 0 || answers.trim().equals("") || answers.equals("' '") || answers.equals(" ") || ( answers.length() < 2 && Character.isWhitespace(answers.charAt(0)))) { answers = null; } } else if (qa.getAnswerType().equals(FwoQuestionAnswer.ANSWER_TYPE_RANGE)) { //for range logger.info("PRINT QA:" + qa + "**"); if (qa != null && qa.getAnswerValues().size() > 1) { begin = qa.getAnswerValues().elementAt(0) != null ? qa.getAnswerValues().elementAt(0).toString() : null; end = qa.getAnswerValues().elementAt(1) != null ? qa.getAnswerValues().elementAt(1).toString() : null; } } else if (qa.getAnswerType().equals(FwoQuestionAnswer.ANSWER_TYPE_SINGLE)) { if(!qa.getAnswerValues().isEmpty()) { answers = (String) qa.getAnswerValues().firstElement(); if(answers != null && answers.trim().equalsIgnoreCase("ALL")) { answers = null; } if(answers != null && qa.getDataType().equals( FwoQuestionAnswer.DATA_TYPE_ALPHANUM) && answers.indexOf("'") < 0) { answers = "'" + answers + "'"; } } } } ArrayList answerBeginEnd = new ArrayList(); answerBeginEnd.add(answers); answerBeginEnd.add(begin); answerBeginEnd.add(end); return answerBeginEnd; } /** * getQuestionAnswerSQL * @return String : formed SQL from the Selection Criteria QuestionAnswer map */ public String getMainDataQuestionAnswerSQL() { logger.info("> getQuestionAnswerSQL"); StringBuffer sb = new StringBuffer(); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; StringBuffer sb2 = new StringBuffer(); StringBuffer sb3 = new StringBuffer(); if (!isPricingTypeAll || !isPricingSheetTypeAll) { //Code modified for 26122 bug fix sb2.append(" AND EXISTS (") .append("SELECT CCP.ID FROM CUSTOMER_CUSTOM_PRICING CCP ") .append("WHERE CCP.LOC = CUSTOMER.LOC") .append(" AND CCP.CUSTOMER_ID = CUSTOMER.ID "); } iterator = m_Map.keySet().iterator(); qa = null; key = null; while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); ArrayList answerBeginEnd = this.getAnswerBeginEnd(qa); if (qa != null) { String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equals("' '") && !answers.equalsIgnoreCase("ALL") && !answers.equals("'A'")) || (start != null && end != null)) { switch (((Integer)key).intValue()) { case TsiQuestionConstants.QUESTION_INCLUDEPRICINGNOTES: { continue; } case TsiQuestionConstants.QUESTION_CUSTOMER:{ sb.append(" AND CUSTOMER.CUSTOMER_NUM >= ") .append(start) .append(" AND CUSTOMER.CUSTOMER_NUM <= ") .append(end + " "); continue; } case TsiQuestionConstants.QUESTION_SALESREP:{ sb.append(" AND EMPLOYEE.EMPLOYEE_NUM IN(" + answers + ") "); continue; } case TsiQuestionConstants.QUESTION_SORT: { if (answers.equals("3") || answers.equals("13") || answers.equals("N")) { sb3.append(" ORDER BY " + Sch_Tables.CUSTOMER + "." + Sch_Customer.CUST_NUMBER + ", R.PRIORITY, L.PRIORITY"); } else if (answers.equals("14") || answers.equals("A")) { sb3.append(" ORDER BY " + Sch_Tables.CUSTOMER + "." + Sch_Customer.NAME + ", R.PRIORITY, L.PRIORITY"); } continue; } case TsiQuestionConstants.QUESTION_BILLINGTYPE:{ if(!answers.equalsIgnoreCase("A")){ sb.append(" AND " + Sch_Tables.CUSTOMER + "." + Sch_Customer.REF_BILLING_TYPE_CD + " = " + answers + " "); } continue; } case TsiQuestionConstants.QUESTION_NAPACUSTCAT:{ sb.append(" AND " + Sch_Tables.CUSTOMER + "." + Sch_Customer.REF_NAPA_CUSTOMER_CATEGORY_ID + " IN (" + answers + ") "); continue; } case TsiQuestionConstants.QUESTION_STORECUSTCAT:{ sb.append(" AND " + Sch_Tables.CUSTOMER + "." + Sch_Customer.STORE_CATEGORY_ID + " IN (" + answers + ") "); continue; } default: { continue; } } } } } if (!isPricingTypeAll || !isPricingSheetTypeAll) { //Code modified for 26122 bug fix sb2.append(getCustomPricingQuestionAnswerSQL(false)); sb2.append(" UNION ALL "); sb2.append(" (SELECT CCP.ID "); sb2.append(" FROM CUSTOMER_FIXED_PRICING CCP "); sb2.append(" WHERE CCP.LOC = CUSTOMER.LOC " ); sb2.append(" AND CCP.CUSTOMER_ID = CUSTOMER.ID "); sb2.append(getCustomPricingQuestionAnswerSQL(true)+")"); sb2.append(") "); } if (sb2.length() > 0) { return sb2.append(sb.toString()).append(sb3.toString()).toString(); } else { return sb.append(sb3.toString()).toString(); } } private String getCustomPricingQuestionAnswerSQL(boolean isFixedPricing){ logger.info("> getCustomPricingQuestionAnswerSQL"); StringBuffer sb = new StringBuffer(); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equalsIgnoreCase("ALL") && !answers.equals("' '")) || (start != null && end != null)) { switch (((Integer)key).intValue()) { case TsiQuestionConstants.QUESTION_PRICESHEET:{ if (!isFixedPricing) { sb.append(" AND CCP"+ ".REF_PRICE_SHEET_CD IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_STOREGROUP:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.STORE_GROUP_ID + " IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_DEPARTMENT:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_SUBDEPARTMENT:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.SUB_DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_STOREDEPARTMENT:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.STORE_DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_PREFIX:{ sb.append(" AND CCP." + (isFixedPricing ? "PART_NUMBER" :Sch_CustomerCustomPricing.PART_PREFIX )+ " IN (" + answers + ")"); continue; } case TsiQuestionConstants.QUESTION_CLASS:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.REF_CLASS_CD + " IN (" + answers + ")"); } else { sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_REPORTABLESTATUS:{ String type = null; if(answers.equalsIgnoreCase("'R'")) type = "'Y'"; else if(answers.equalsIgnoreCase("'N'")) type = "'N'"; else continue; sb.append(" AND CCP." + Sch_CustomerCustomPricing.REPORTABLE + " = " + type); continue; } case TsiQuestionConstants.QUESTION_CUSTOMPRICINGTYPE:{ if (!isFixedPricing ) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.REF_PRICING_TYPE_CD + " IN (" + answers + ")"); } else if (answers.indexOf("F") == -1){ sb.append(" AND CCP.CUSTOMER_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_PRODLINE:{ sb.append(" AND CCP." + Sch_CustomerCustomPricing.LINE_ABBREV + " IN (" + answers + ")"); continue; } case TsiQuestionConstants.QUESTION_GROUP:{ if (!isFixedPricing) { sb.append(" AND CCP." + Sch_CustomerCustomPricing.GROUP_CODE + " IN (" + answers + ")"); } continue; } case TsiQuestionConstants.QUESTION_DATERANGE2:{ sb.append(" AND ((CCP.BEGIN_DATE IS NOT NULL ") .append("AND CCP.BEGIN_DATE BETWEEN DATE('" + start +"') ") .append("AND DATE('" + end +"') ") .append("AND CCP.END_DATE IS NOT NULL ") .append("AND CCP.END_DATE BETWEEN DATE('" + start + "') ") .append("AND DATE('" + end +"')) ") .append("OR (CCP.BEGIN_DATE IS NULL AND CCP.END_DATE IS NOT NULL ") .append("AND CCP.END_DATE BETWEEN DATE('" + start + "') ") .append("AND DATE('" + end +"')) ") .append(" OR (CCP.BEGIN_DATE IS NOT NULL ") .append("AND CCP.BEGIN_DATE BETWEEN DATE('" + start +"') ") .append("AND DATE('" + end +"') ") .append("AND CCP.END_DATE IS NULL)") .append(" OR (CCP.BEGIN_DATE IS NULL ") .append("AND CCP.END_DATE IS NULL))"); continue; } default:{ continue; } } } } } if(sb.toString().trim().equalsIgnoreCase("AND")) sb = new StringBuffer(" 1 = 1"); logger.debug("< getCustomPricingQuestionAnswerSQL" + sb.toString()); return sb.toString(); } // print columns of pricing and display profiles (leaving blanks for other customer properties) private void outputProfileCols(ArrayList pricingProfiles, ArrayList displayProfiles) { int max = Math.max(pricingProfiles.size(),displayProfiles.size()); Iterator p = pricingProfiles.iterator(); Iterator d = displayProfiles.iterator(); for(int i = 0; i < max; i++) { m_data1Array[0] = ""; m_data1Array[1] = ""; m_data1Array[2] = ""; m_data1Array[3] = ""; m_data1Array[4] = ""; m_data1Array[5] = ""; m_data1Array[6] = ""; m_data1Array[7] = p.hasNext() ? p.next() : ""; m_data1Array[8] = d.hasNext() ? d.next() : ""; appendText(m_data1RowFormat.format(m_data1Array)); } } private Object[] getMainData(ResultSet rs, Object[] objArr) throws SQLException{ if(objArr.length != COL_TYPE1_SIZE) throw new ArrayIndexOutOfBoundsException(); objArr[0] = rs.getString("CUSTOMER_NUMBER"); objArr[1] = rs.getString("SALES_REP"); objArr[2] = rs.getString("CUSTOMER_NAME"); objArr[3] = rs.getString("BILLING_TYPE"); //fix of #3 in bug 10861 String custCategory = rs.getString("NAPA_CUST_CAT"); if (custCategory.indexOf('-') == 1) { custCategory = " " + rs.getString("NAPA_CUST_CAT"); } objArr[4] = custCategory; objArr[5] = rs.getString("STORE_CATEGORY"); objArr[6] = rs.getString("USUAL_PRICE"); objArr[7] = rs.getString("PRICING_PROFILE"); objArr[8] = rs.getString("DISPLAY_PROFILE"); return objArr; } /*************************************************************************** * Method Name : getSalesInfoData * Description : This method gets the Sales Information * @param : ResultSet - Sales Information. * Object Array - Empty Object Array to hold the values fetch * from the database * @return : Object Array - Containing the sales information * @throws : SQLException **************************************************************************/ private Object[] getSalesInfoData(ResultSet rsSalesInfo, Object[] objArr) throws SQLException { String rsValue = null; String defaultSalesValue = "0.00"; String defaultGPValue = "0.00"; decimalFormatter.setMinimumFractionDigits(2); decimalFormatter.setMaximumFractionDigits(2); decimalFormatter.setGroupingUsed(true); if(objArr.length != COL_TYPE5_SIZE) { throw new ArrayIndexOutOfBoundsException(); } objArr[0] = MTD_SALES_LBL; rsValue = rsSalesInfo.getString("MTD_SALES"); if (rsValue != null && !rsValue.equals("") && !rsValue.equals("0")) { objArr[1] = decimalFormatter.format((Double.valueOf(rsValue)).doubleValue()); } else { objArr[1] = defaultSalesValue; } objArr[2] = MTD_SALES_GP_LBL; rsValue = rsSalesInfo.getString("MTD_GP_PERCENT"); if (rsValue != null && !rsValue.equals("") && !rsValue.equals("0")) { objArr[3] = decimalFormatter.format((Double.valueOf(rsValue)).doubleValue())+"%"; }else { objArr[3] = defaultGPValue + "%"; } objArr[4] = YTD_SALES_LBL; rsValue = rsSalesInfo.getString("YTD_SALES"); if (rsValue != null && !rsValue.equals("") && !rsValue.equals("0")) { objArr[5] = decimalFormatter.format((Double.valueOf(rsValue)).doubleValue()); } else { objArr[5] = defaultSalesValue; } objArr[6] = YTD_SALES_GP_LBL; rsValue = rsSalesInfo.getString("YTD_GP_PERCENT"); if (rsValue != null && !rsValue.equals("") && !rsValue.equals("0")) { objArr[7] = decimalFormatter.format((Double.valueOf(rsValue)).doubleValue())+"%"; } else { objArr[7] = defaultGPValue + "%"; } return objArr; } private Object[] getFixedPriceData(ResultSet rs, Object[] objArr, boolean printLabel) throws SQLException{ if(objArr.length != COL_TYPE2_SIZE) throw new ArrayIndexOutOfBoundsException(); //objArr[0] = printLabel ? FIXED_PRICE_LBL : " " ; // Removed the Label name as header moved to one line up objArr[0] = ""; // assigned a empty string objArr[1] = rs.getString(Sch_CustomerCustomPricing.LINE_ABBREV); objArr[2] = rs.getString(Sch_CustomerCustomPricing.PART_PREFIX); objArr[3] = rs.getString(Sch_CustomerCustomPricing.PART_PRICE); objArr[4] = rs.getString(Sch_CustomerCustomPricing.REPORTABLE); try { objArr[5] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.BEGIN_DATE)); objArr[6] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.END_DATE)); } catch (DatePatternFormatException e) { objArr[5] = rs.getString(Sch_CustomerCustomPricing.BEGIN_DATE); objArr[6] = rs.getString(Sch_CustomerCustomPricing.END_DATE); } objArr[7] = getPriceNotation(rs); return objArr; } private Object[] getCustomPricingData(ResultSet rs, Object[] objArr,boolean printLabel) throws SQLException{ if(objArr.length != COL_TYPE3_SIZE) throw new ArrayIndexOutOfBoundsException(); // Custom Pricing Report Improvement START decimalFormatter.setMinimumFractionDigits(2); decimalFormatter.setMaximumFractionDigits(2); //objArr[0] = printLabel ? CUSTOM_PRICE_LBL : " "; Removed the Label name as header moved to one line up objArr[0] = ""; // assigned a empty string objArr[1] = rs.getString(Sch_CustomerCustomPricing.STORE_GROUP_ID); objArr[2] = rs.getString(Sch_CustomerCustomPricing.DEPARTMENT_ID); objArr[3] = rs.getString(Sch_CustomerCustomPricing.SUB_DEPARTMENT_ID); objArr[4] = rs.getString(Sch_CustomerCustomPricing.LINE_ABBREV); objArr[5] = rs.getString(Sch_CustomerCustomPricing.GROUP_CODE); objArr[6] = rs.getString(Sch_CustomerCustomPricing.PART_PREFIX); objArr[7] = rs.getString(Sch_CustomerCustomPricing.REF_CLASS_CD); objArr[8] = rs.getString(Sch_CustomerCustomPricing.STORE_DEPARTMENT_ID); objArr[9] = rs.getString(Sch_CustomerCustomPricing.REF_PRICE_SHEET_CD); BigDecimal bdMarkup = rs.getBigDecimal(Sch_CustomerCustomPricing.MARKUP_PERCENT); objArr[10] = (bdMarkup == null || bdMarkup.signum() == 0) ? " " : bdMarkup.toString(); objArr[11] = rs.getString(Sch_CustomerCustomPricing.REPORTABLE); objArr[12] = getRoundingDescription(rs.getString(Sch_CustomerCustomPricing.REF_CURRENCY_ROUNDING_CD)); try { objArr[13] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.BEGIN_DATE)); objArr[14] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.END_DATE)); } catch (DatePatternFormatException e) { objArr[13] = rs.getString(Sch_CustomerCustomPricing.BEGIN_DATE); objArr[14] = rs.getString(Sch_CustomerCustomPricing.END_DATE); } /* * If user has selected to print sales information, the sales information under Custom * Pricing section is added in an Object array. */ if (m_bPrintSalesInfo) { /* Fetching YTD sales value from result set and * adding filler based on value length. */ if (rs.getString("YTD_SALES") != null && !rs.getString("YTD_SALES").equals("") && !rs.getString("YTD_SALES").equals("0")) { String ytdSales = rs.getString("YTD_SALES"); String formattedYTDSales = decimalFormatter.format((Double .valueOf(ytdSales)).doubleValue()); objArr[15] = formattedYTDSales; } else { objArr[15] = "0.00"; } // Fetching GP percent value from result set. if (rs.getString("YTD_GP_PERCENT") != null && !rs.getString("YTD_GP_PERCENT").equals("") && !rs.getString("YTD_GP_PERCENT").equals("0")) { objArr[16] = decimalFormatter.format((Double.valueOf(rs .getString("YTD_GP_PERCENT"))).doubleValue()) + "%"; } else { objArr[16] = "0.00%"; } } else { objArr[15] = ""; objArr[16] = ""; } objArr[17] = getErrorNotation(rs) + getPriceNotation(rs); return objArr; } private Object[] getInstalledCorePricingData(ResultSet rs, Object[] objArr, boolean printLabel) throws SQLException{ if(objArr.length != COL_TYPE4_SIZE) throw new ArrayIndexOutOfBoundsException(); // objArr[0] = printLabel ? INSTALLED_PRICE_LBL : CORE_PRICE_LBL; // Removed the Label name as header moved to one line up objArr[0] = ""; // assigned a empty string objArr[1] = rs.getString(Sch_CustomerCustomPricing.STORE_GROUP_ID); objArr[2] = rs.getString(Sch_CustomerCustomPricing.DEPARTMENT_ID); objArr[3] = rs.getString(Sch_CustomerCustomPricing.SUB_DEPARTMENT_ID); objArr[4] = rs.getString(Sch_CustomerCustomPricing.LINE_ABBREV); objArr[5] = rs.getString(Sch_CustomerCustomPricing.GROUP_CODE); objArr[6] = rs.getString(Sch_CustomerCustomPricing.PART_PREFIX); objArr[7] = rs.getString(Sch_CustomerCustomPricing.REF_CLASS_CD); objArr[8] = rs.getString(Sch_CustomerCustomPricing.STORE_DEPARTMENT_ID); objArr[9] = rs.getString(Sch_CustomerCustomPricing.REF_PRICE_SHEET_CD); BigDecimal bdMarkup = rs.getBigDecimal(Sch_CustomerCustomPricing.MARKUP_PERCENT); objArr[10] = (bdMarkup == null || bdMarkup.signum() == 0) ? "" : bdMarkup.toString(); objArr[11] = getRoundingDescription(rs.getString(Sch_CustomerCustomPricing.REF_CURRENCY_ROUNDING_CD)); try { objArr[12] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.BEGIN_DATE)); objArr[13] = m_patternDate.format(rs.getDate(Sch_CustomerCustomPricing.END_DATE)); } catch (DatePatternFormatException e) { objArr[12] = rs.getString(Sch_CustomerCustomPricing.BEGIN_DATE); objArr[13] = rs.getString(Sch_CustomerCustomPricing.END_DATE); } objArr[14] = printLabel ? getErrorNotation(rs) + getPriceNotation(rs) : getPriceNotation(rs); return objArr; } // Calc error code (if price type is R/I) private String getErrorNotation(ResultSet rs) throws SQLException { String priceType = rs.getString("PRICE_TYPE"); if(priceType != null && priceType.equals("2")) { // R return rs.getString("ERROR_NOTE_R"); } else if(priceType != null && priceType.equals("3")) { // I return rs.getString("ERROR_NOTE_I"); } else { return ""; } } // Test price date range, return * or + private String getPriceNotation(ResultSet rs) throws SQLException { Calendar todayCal = Calendar.getInstance(); todayCal.set(Calendar.HOUR_OF_DAY, 0); todayCal.set(Calendar.MINUTE, 0); todayCal.set(Calendar.SECOND, 0); todayCal.set(Calendar.MILLISECOND, 0); java.sql.Date beginDate = rs.getDate("BEGIN_DATE"); if(beginDate != null) { Calendar beginDateCal = Calendar.getInstance(); beginDateCal.setTime(beginDate); beginDateCal.set(Calendar.HOUR_OF_DAY, 0); beginDateCal.set(Calendar.MINUTE, 0); beginDateCal.set(Calendar.SECOND, 0); beginDateCal.set(Calendar.MILLISECOND, 0); if(todayCal.before(beginDateCal)) { return "*"; } } java.sql.Date endDate = rs.getDate("END_DATE"); if(endDate != null) { Calendar endDateCal = Calendar.getInstance(); endDateCal.setTime(endDate); endDateCal.set(Calendar.HOUR_OF_DAY, 0); endDateCal.set(Calendar.MINUTE, 0); endDateCal.set(Calendar.SECOND, 0); endDateCal.set(Calendar.MILLISECOND, 0); if(todayCal.after(endDateCal)) { return "+"; } } return ""; // active } /*************************************************************************** * Method Name : outputSalesInfo * Description : This method prints the sales information for each customer * @param : ResultSet - Containing the sales information fetch from the * database * @return : None * @throws : SQLException **************************************************************************/ private void outputSalesInfo(ResultSet rsSalesInfo) throws SQLException { try { if(rsSalesInfo.next()){ appendText(m_data5RowFormat.format(getSalesInfoData(rsSalesInfo,m_data5Array))); } } finally { JDBCUtil.closeResultSet(rsSalesInfo); } } private void outputCustomPricing(ResultSet rsCustomPricing) throws SQLException { while(rsCustomPricing.next()){ String strPricingType = rsCustomPricing.getString("PRICE_TYPE"); if(strPricingType.equalsIgnoreCase("1")){ writeDetails(FIXED_PRICE_LBL,m_hdr2,m_data2RowFormat,getFixedPriceData(rsCustomPricing,m_data2Array,true),m_bFixedHeader); if(m_bFixedHeader) m_bFixedHeader = false; } else if(strPricingType.equalsIgnoreCase("2")){ if(m_bPrintSalesInfo ){ if(isPricingProfileCustomDetails){ writeDetails(CUSTOM_PRICE_LBL,m_hdr3,m_data3RowFormat,getCustomPricingData(rsCustomPricing,m_data3Array,true),m_bCustomHeader); if(m_bCustomHeader) m_bCustomHeader = false; }else{ writeDetails(CUSTOM_PRICE_LBL,m_customPricingHdr,m_data7RowFormat,getPricingProfileCustomData(rsCustomPricing,m_data7Array,true),m_bCustomHeader); if(m_bCustomHeader) m_bCustomHeader = false; } }else{ writeDetails(CUSTOM_PRICE_LBL,m_customPricingHdr,m_data7RowFormat,getPricingProfileCustomData(rsCustomPricing,m_data7Array,true),m_bCustomHeader); if(m_bCustomHeader) m_bCustomHeader = false; } } else if(strPricingType.equalsIgnoreCase("3")){ writeDetails(INSTALLED_PRICE_LBL,m_hdr4,m_data4RowFormat,getInstalledCorePricingData(rsCustomPricing,m_data4Array,true),m_bInstalledHeader); if(m_bInstalledHeader) m_bInstalledHeader = false; } else if(strPricingType.equalsIgnoreCase("4")){ writeDetails(CORE_PRICE_LBL,m_hdr4,m_data4RowFormat,getInstalledCorePricingData(rsCustomPricing,m_data4Array,false),m_bCoreHeader); if(m_bCoreHeader) m_bCoreHeader = false; } else continue; if(m_bIncludePriceNotes){ writeNotes(rsCustomPricing.getString(Sch_CustomerCustomPricing.NOTE)); } } if(!m_bCoreHeader || !m_bCustomHeader || !m_bFixedHeader || !m_bInstalledHeader) appendLineBreak(); JDBCUtil.closeResultSet(rsCustomPricing); } /*************************************************************************** * Method Name : getSalesInfo * Description : This method executes the query to get the sales information. * @param : String - Customer ID * @return : void * @throws : SQLException **************************************************************************/ private void getSalesInfo(String customerID) throws SQLException{ // this will catch the first past through if(customerID == null || customerID.equals("")) return; if(m_prepStmtSI == null) { StringBuffer query = new StringBuffer(600); query.append("SELECT"); //MTD SALES query.append("(SELECT COALESCE(SUM(ROUND(ILT.UNIT_PRICE,2)),0)"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), CURRENT DATE)"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'Y') AS MTD_SALES_CASE_PRICE_Y,"); query.append("(SELECT COALESCE(SUM(ROUND(ILT.UNIT_PRICE*ILT.QUANTITY_BILLED,2)),0)"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), CURRENT DATE)"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'N') AS MTD_SALES_CASE_PRICE_N,"); query.append(" MTD_SALES_CASE_PRICE_Y + MTD_SALES_CASE_PRICE_N AS MTD_SALES, "); // MTD GP query.append("(SELECT (MTD_SALES - SUM(ROUND((UNIT_COST - UNIT_REBATE)*QUANTITY_BILLED,2)))"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), CURRENT DATE)"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ?) AS MTD_GP,"); // MTD GP PERCENT query.append("(SELECT IF MTD_SALES = 0 THEN"); query.append(" 0"); query.append(" ELSE"); query.append(" ROUND(MTD_GP/MTD_SALES*100,2)"); query.append(" ENDIF) AS MTD_GP_PERCENT,"); // YTD SALES query.append("(SELECT COALESCE(SUM(ROUND(ILT.UNIT_PRICE,2)),0) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE))"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'Y') AS YTD_SALES_CASE_PRICE_Y,"); query.append("(SELECT COALESCE(SUM(ROUND(ILT.UNIT_PRICE*ILT.QUANTITY_BILLED,2)),0) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE))"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'N') AS YTD_SALES_CASE_PRICE_N,"); query.append(" YTD_SALES_CASE_PRICE_Y + YTD_SALES_CASE_PRICE_N AS YTD_SALES, "); // YTD GP query.append("(SELECT (YTD_SALES - SUM(ROUND((UNIT_COST - UNIT_REBATE)*QUANTITY_BILLED,2)))"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD(DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE))"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ?) AS YTD_GP,"); // YTD GP PERCENT query.append("(SELECT IF YTD_SALES = 0 THEN"); query.append(" 0"); query.append(" ELSE"); query.append(" ROUND(YTD_GP/YTD_SALES*100,2)"); query.append(" ENDIF) AS YTD_GP_PERCENT"); m_prepStmtSI = m_conn.prepareStatement(query.toString()); } m_prepStmtSI.setString(1,customerID); m_prepStmtSI.setString(2,customerID); m_prepStmtSI.setString(3,customerID); m_prepStmtSI.setString(4,customerID); m_prepStmtSI.setString(5,customerID); m_prepStmtSI.setString(6,customerID); ResultSet rsSalesInfo = m_prepStmtSI.executeQuery(); outputSalesInfo(rsSalesInfo); } private void getCustomPricing(String customerID) throws SQLException{ // this will catch the first past through if(customerID == null || customerID.equals("")) return; //see if prepare statement works now. logger.debug("> getCustomPricing"); if(m_prepStmtCP == null) { StringBuffer query = new StringBuffer(600); query.append("SELECT * FROM ( "); query.append("SELECT ( CASE CCP.ref_pricing_type_cd WHEN 'F' then '1'"); query.append(" WHEN 'R' then '2' WHEN 'I' then '3' WHEN 'C' then '4' END ) as PRICE_TYPE,"); query.append(" CASE WHEN CCP.REF_PRICE_SHEET_CD = 'X' AND CCP.REF_PRICING_TYPE_CD = 'R' THEN"); query.append(" IF EXISTS (SELECT B.ID FROM CUSTOMER_CUSTOM_PRICING B WHERE"); query.append(" B.REF_PRICING_TYPE_CD = 'I'"); query.append(" AND B.CUSTOMER_ID = CCP.CUSTOMER_ID"); query.append(" AND (B.REF_PRICE_SHEET_CD = '0' OR B.REF_PRICE_SHEET_CD = '1')"); query.append(" AND ISNULL(B.STORE_GROUP_ID,'') = ISNULL(CCP.STORE_GROUP_ID,'')"); query.append(" AND ISNULL(B.DEPARTMENT_ID,'') = ISNULL(CCP.DEPARTMENT_ID,'')"); query.append(" AND ISNULL(B.SUB_DEPARTMENT_ID,'') = ISNULL(CCP.SUB_DEPARTMENT_ID,'')"); query.append(" AND ISNULL(B.LINE_ABBREV,'') = ISNULL(CCP.LINE_ABBREV,'')"); query.append(" AND ISNULL(B.GROUP_CODE,'') = ISNULL(CCP.GROUP_CODE,'')"); query.append(" AND ISNULL(B.REF_CLASS_CD,'') = ISNULL(CCP.REF_CLASS_CD,'')"); query.append(" AND ISNULL(B.STORE_DEPARTMENT_ID,'') = ISNULL(CCP.STORE_DEPARTMENT_ID,'')"); query.append(" AND ISNULL(B.PART_PREFIX,'') = ISNULL(CCP.PART_PREFIX,'')"); query.append(" ) THEN 'X' ELSE '-' ENDIF ELSE ' ' END AS ERROR_NOTE_R,"); query.append(" CASE WHEN CCP.REF_PRICING_TYPE_CD = 'I' AND (CCP.REF_PRICE_SHEET_CD = '0' OR CCP.REF_PRICE_SHEET_CD = '1') THEN"); query.append(" IF EXISTS (select C.ID FROM CUSTOMER_CUSTOM_PRICING C WHERE"); query.append(" C.REF_PRICING_TYPE_CD = 'R'"); query.append(" AND C.CUSTOMER_ID = CCP.CUSTOMER_ID"); query.append(" AND C.REF_PRICE_SHEET_CD = 'X'"); query.append(" AND ISNULL(C.STORE_GROUP_ID,'') = ISNULL(CCP.STORE_GROUP_ID,'')"); query.append(" AND ISNULL(C.DEPARTMENT_ID,'') = ISNULL(CCP.DEPARTMENT_ID,'')"); query.append(" AND ISNULL(C.SUB_DEPARTMENT_ID,'') = ISNULL(CCP.SUB_DEPARTMENT_ID,'')"); query.append(" AND ISNULL(C.LINE_ABBREV,'') = ISNULL(CCP.LINE_ABBREV,'')"); query.append(" AND ISNULL(C.GROUP_CODE,'') = ISNULL(CCP.GROUP_CODE,'')"); query.append(" AND ISNULL(C.REF_CLASS_CD,'') = ISNULL(CCP.REF_CLASS_CD,'')"); query.append(" AND ISNULL(C.STORE_DEPARTMENT_ID,'') = ISNULL(CCP.STORE_DEPARTMENT_ID,'')"); query.append(" AND ISNULL(C.PART_PREFIX,'') = ISNULL(CCP.PART_PREFIX,'')"); query.append(" ) then 'X' ELSE ' ' ENDIF ELSE ' ' END AS ERROR_NOTE_I,"); /* * Added for Custom Pricing Report Improvement * Query to fetch the sales information under Custom Pricing section. */ if (m_bPrintSalesInfo) { // YTD SALES query.append("IF CCP.GROUP_CODE IS NULL THEN "); query.append("( SELECT "); query.append(" (ISNULL((SELECT SUM(ILT.UNIT_PRICE) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.LOC = CCP.LOC "); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'Y' GROUP BY ILT.LINE_ABBREV),0)) "); query.append(" + "); query.append(" (ISNULL((SELECT SUM(ILT.UNIT_PRICE*ILT.QUANTITY_BILLED) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC AND "); query.append(" I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.LOC = CCP.LOC "); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'N' GROUP BY ILT.LINE_ABBREV),0)) "); query.append(" ) "); query.append("ELSE "); query.append(" ( SELECT "); query.append(" (ISNULL((SELECT SUM(ILT.UNIT_PRICE) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.GROUP_CODE = CCP.GROUP_CODE AND ILT.LOC = CCP.LOC "); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'Y' GROUP BY ILT.LINE_ABBREV, ILT.GROUP_CODE),0)) "); query.append(" + "); query.append(" (ISNULL((SELECT SUM(ILT.UNIT_PRICE*ILT.QUANTITY_BILLED) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC AND "); query.append(" I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.GROUP_CODE = CCP.GROUP_CODE AND ILT.LOC = CCP.LOC "); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND C.ID = ? AND ILT.CASE_PRICE = 'N' GROUP BY ILT.LINE_ABBREV, ILT.GROUP_CODE),0)) "); query.append(" ) "); query.append(" ENDIF AS YTD_SALES, "); // YTD GP query.append(" IF CCP.GROUP_CODE IS NULL THEN "); query.append("(SELECT (YTD_SALES - SUM(ROUND((UNIT_COST - UNIT_REBATE)*QUANTITY_BILLED,2)))"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD(DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE))"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.LOC = CCP.LOC "); query.append(" AND C.ID = ? GROUP BY ILT.LINE_ABBREV) ELSE "); query.append("(SELECT (YTD_SALES - SUM(ROUND((UNIT_COST - UNIT_REBATE)*QUANTITY_BILLED,2)))"); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C"); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC "); query.append(" AND I.ID = ILT.INVOICE_ID AND I.LOC = ILT.LOC "); query.append(" AND I.INVOICE_DATE >= DATEADD(DD, -(DATEPART( DD , CURRENT DATE )-1), DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE))"); query.append(" AND I.VOIDED = 'N' AND I.LOC = " + m_loc + " "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.GROUP_CODE = CCP.GROUP_CODE AND ILT.LOC = CCP.LOC "); query.append(" AND C.ID = ? GROUP BY ILT.LINE_ABBREV, ILT.GROUP_CODE) ENDIF AS YTD_GP,"); // YTD GP PERCENT query.append("(SELECT IF YTD_SALES = 0 THEN"); query.append(" 0"); query.append(" ELSE"); query.append(" ROUND(YTD_GP/YTD_SALES * 100,2)"); query.append(" ENDIF) AS YTD_GP_PERCENT, "); } if (isLandedMode && pricingModeValue.equalsIgnoreCase(LANDED_PRICING)) { query.append(" CCP.ID AS ID,"); query.append(" CCP.LOC AS LOC,"); query.append(" CCP.CUSTOMER_ID AS CUSTOMER_ID,"); query.append(" CCP.REF_PRICING_TYPE_CD AS REF_PRICING_TYPE_CD,"); query.append(" CONVERT(CHAR(5),CCP.STORE_GROUP_ID) AS STORE_GROUP_ID,"); query.append(" CONVERT(CHAR(5),CCP.DEPARTMENT_ID) AS DEPARTMENT_ID,"); query.append(" CONVERT(CHAR(5),CCP.SUB_DEPARTMENT_ID) AS SUB_DEPARTMENT_ID,"); query.append(" CCP.LINE_ABBREV AS LINE_ABBREV,"); query.append(" IF (CCP.REF_PRICING_TYPE_CD = 'F') THEN"); query.append(" CONVERT(CHAR(5),ISNULL(INVENTORY.GROUP_CODE, 0)) ELSE CONVERT(CHAR(5),CCP.GROUP_CODE) ENDIF"); query.append(" AS GROUP_CODE,"); query.append(" CCP.PART_PREFIX AS PART_PREFIX,"); query.append(" CCP.REF_CLASS_CD AS REF_CLASS_CD,"); query.append(" CONVERT(CHAR(5),CCP.STORE_DEPARTMENT_ID) AS STORE_DEPARTMENT_ID,"); query.append(" CCP.REPORTABLE AS REPORTABLE,"); query.append(" CCP.REF_PRICE_SHEET_CD AS REF_PRICE_SHEET_CD,"); query.append(" CCP.BEGIN_DATE AS BEGIN_DATE,"); query.append(" CCP.END_DATE AS END_DATE,"); query.append(" CCP.MARKUP_PERCENT AS MARKUP_PERCENT,"); query.append(" CCP.REF_CURRENCY_ROUNDING_CD AS REF_CURRENCY_ROUNDING_CD,"); query.append(" 0 AS PRICE,"); query.append(" CCP.LAST_MODIFIED_DATE AS LAST_MODIFIED_DATE,"); query.append(" CCP.MODIFIED_BY_EMPLOYEE_ID AS MODIFIED_BY_EMPLOYEE_ID,"); query.append(" CCP.NOTE AS NOTE, CCP.PART_PREFIX AS PART_PREFIX_FIXED,"); query.append(" ( SELECT TRANSLATION.TEXT FROM TRANSLATION"); query.append(" WHERE TABLE_NAME = 'REF_CURRENCY_ROUNDING'"); query.append(" AND COLUMN_NAME = 'DESCRIPTION'"); query.append(" AND TRANSLATION.REF_CD = CCP.REF_CURRENCY_ROUNDING_CD"); query.append(" AND REF_LANGUAGE_CD = 'en') AS CURRENCY_ROUNDING,"); query.append(" ( SELECT STORE_GROUP.STORE_GROUP_NUM"); query.append(" FROM STORE_GROUP"); query.append(" WHERE CCP.STORE_GROUP_ID = STORE_GROUP.ID"); query.append(" AND CCP.LOC = STORE_GROUP.LOC) AS STORE_GROUP_NUM,"); query.append(" IF PRICE * LANDED_RESALE_PRICE_FACTOR *"); query.append(" CURRENCY_CONVERSION_FACTOR < 100000000 THEN"); query.append(" CAST( PRICE * LANDED_RESALE_PRICE_FACTOR *"); query.append(" CURRENCY_CONVERSION_FACTOR AS DECIMAL(12,4))"); query.append(" ELSE 0 ENDIF AS PART_PRICE,"); query.append(" IF ISNULL( TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR,"); query.append(" SP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" 1) <> 0 THEN ISNULL(TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR,"); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, 1)"); query.append(" ELSE 1 ENDIF AS LANDED_RESALE_PRICE_FACTOR,"); query.append(" ISNULL(SP.CURRENCY_CONVERSION_FACTOR, 1)"); query.append(" AS CURRENCY_CONVERSION_FACTOR"); query.append(" FROM CUSTOMER_CUSTOM_PRICING CCP"); query.append(" LEFT OUTER JOIN INVENTORY ON"); query.append(" CCP.LINE_ABBREV = INVENTORY.LINE_ABBREV"); query.append(" AND CCP.PART_PREFIX = INVENTORY.PART_NUMBER"); query.append(" LEFT OUTER JOIN STORE_PROFILE"); query.append(" AS SP ON CCP.LOC = SP.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0"); query.append(" LEFT OUTER JOIN PRODUCT_LINE"); query.append(" AS TAILORED_GROUP ON CCP.LINE_ABBREV = TAILORED_GROUP.LINE_ABBREV"); query.append(" AND INVENTORY.GROUP_CODE = TAILORED_GROUP.GROUP_CODE"); query.append(" AND CCP.LOC = TAILORED_GROUP.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0"); query.append(" AND (TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_COST_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_CORE_PRICE_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_CORE_COST_FACTOR <> 0)"); query.append(" LEFT OUTER JOIN PRODUCT_LINE"); query.append(" AS GROUP_ZERO ON CCP.LINE_ABBREV = GROUP_ZERO.LINE_ABBREV"); query.append(" AND GROUP_ZERO.GROUP_CODE = 0"); query.append(" AND CCP.LOC = GROUP_ZERO.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0"); query.append(" AND (GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_COST_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_CORE_PRICE_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_CORE_COST_FACTOR <> 0)"); } else { query.append(" ID,LOC,CUSTOMER_ID, REF_PRICING_TYPE_CD, "); query.append(" CONVERT(CHAR(5),STORE_GROUP_ID) AS STORE_GROUP_ID, CONVERT(CHAR(5),DEPARTMENT_ID) AS DEPARTMENT_ID, CONVERT(CHAR(5),SUB_DEPARTMENT_ID) AS SUB_DEPARTMENT_ID, LINE_ABBREV," + " CONVERT(CHAR(5),GROUP_CODE) AS GROUP_CODE, PART_PREFIX, REF_CLASS_CD, CONVERT(CHAR(5),STORE_DEPARTMENT_ID) AS STORE_DEPARTMENT_ID,BEGIN_DATE, END_DATE,"); query.append(" REPORTABLE, REF_PRICE_SHEET_CD,MARKUP_PERCENT, REF_CURRENCY_ROUNDING_CD, " + "NULL AS PART_PRICE, NOTE,LAST_MODIFIED_DATE,MODIFIED_BY_EMPLOYEE_ID"); query.append(" FROM CUSTOMER_CUSTOM_PRICING CCP "); } query.append(" WHERE CCP.LOC = " + m_loc + " "); query.append(getCustomPricingQuestionAnswerSQL(false)); query.append(" AND CCP.CUSTOMER_ID = ? "); query.append(" UNION ALL "); query.append("SELECT '1' AS PRICE_TYPE,' ' AS ERROR_NOTE_R,' ' AS ERROR_NOTE_ID,"); if (m_bPrintSalesInfo) { // YTD SALES query.append("( SELECT "); query.append("(ISNULL((SELECT SUM(ILT.UNIT_PRICE) FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC AND I.ID = ILT.INVOICE_ID "); query.append("AND I.LOC = ILT.LOC AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , CURRENT DATE )-1), "); query.append(" DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.LOC = CCP.LOC AND I.VOIDED = 'N' "); query.append(" AND I.LOC = 1 AND C.ID = ? AND ILT.CASE_PRICE = 'Y' GROUP BY ILT.LINE_ABBREV),0)) "); query.append(" + (ISNULL((SELECT SUM(ILT.UNIT_PRICE*ILT.QUANTITY_BILLED) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC AND I.ID = ILT.INVOICE_ID "); query.append(" AND I.LOC = ILT.LOC AND I.INVOICE_DATE >= DATEADD( DD, -(DATEPART( DD , "); query.append(" CURRENT DATE )-1), DATEADD(MM,-(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND ILT.LINE_ABBREV = CCP.LINE_ABBREV AND ILT.LOC = CCP.LOC AND I.VOIDED = 'N' "); query.append(" AND I.LOC = 1 AND C.ID = ? AND ILT.CASE_PRICE = 'N' GROUP BY ILT.LINE_ABBREV), 0)) ) "); query.append(" AS YTD_SALES, "); query.append(" (SELECT (YTD_SALES - SUM(ROUND((UNIT_COST - UNIT_REBATE)*QUANTITY_BILLED, 2))) "); query.append(" FROM INVOICE I, INVOICE_LINE_ITEM ILT, CUSTOMER C "); query.append(" WHERE C.ID = I.CUSTOMER_ID AND C.LOC = I.LOC AND I.ID = ILT.INVOICE_ID "); query.append(" AND I.LOC = ILT.LOC AND I.INVOICE_DATE >= DATEADD(DD, -(DATEPART( DD , CURRENT DATE )-1), "); query.append(" DATEADD(MM, -(DATEPART( MM , CURRENT DATE )-1), CURRENT DATE)) "); query.append(" AND I.VOIDED = 'N' AND I.LOC = 1 AND ILT.LINE_ABBREV = CCP.LINE_ABBREV "); query.append(" AND ILT.LOC = CCP.LOC AND C.ID = ? "); query.append(" GROUP BY ILT.LINE_ABBREV) "); query.append(" AS YTD_GP, "); query.append(" (SELECT IF YTD_SALES = 0 THEN 0 "); query.append(" ELSE ROUND(YTD_GP/YTD_SALES * 100, 2) ENDIF) "); query.append(" AS YTD_GP_PERCENT, "); } if (isLandedMode && pricingModeValue.equalsIgnoreCase(LANDED_PRICING)) { query.append(" CCP.ID AS ID, "); query.append(" CCP.LOC AS LOC, "); query.append(" CCP.CUSTOMER_ID AS CUSTOMER_ID, "); query.append(" 'F' AS REF_PRICING_TYPE_CD, "); query.append(" null AS STORE_GROUP_ID, "); query.append(" null AS DEPARTMENT_ID, "); query.append(" null AS SUB_DEPARTMENT_ID, "); query.append(" CCP.LINE_ABBREV AS LINE_ABBREV,"); query.append(" ISNULL(INVENTORY.GROUP_CODE, 0)"); query.append(" AS GROUP_CODE, CCP.PART_NUMBER "); query.append(" AS PART_PREFIX, "); query.append(" ' ' AS REF_CLASS_CD,"); query.append(" null AS STORE_DEPARTMENT_ID, "); query.append(" CCP.REPORTABLE AS REPORTABLE, "); query.append(" ' ' AS REF_PRICE_SHEET_CD, "); query.append(" CCP.BEGIN_DATE AS BEGIN_DATE, "); query.append(" CCP.END_DATE AS END_DATE, "); query.append(" ' ' AS MARKUP_PERCENT, "); query.append(" ' ' AS REF_CURRENCY_ROUNDING_CD, "); query.append(" CCP.PART_PRICE AS PRICE, "); query.append(" CCP.LAST_MODIFIED_DATE AS LAST_MODIFIED_DATE, "); query.append(" CCP.MODIFIED_BY_EMPLOYEE_ID AS MODIFIED_BY_EMPLOYEE_ID, "); query.append(" CCP.NOTE AS NOTE, "); query.append(" CCP.PART_NUMBER AS PART_PREFIX_FIXED, "); query.append(" ' ' AS CURRENCY_ROUNDING, "); query.append(" ' ' AS STORE_GROUP_NUM, "); query.append(" IF PRICE * LANDED_RESALE_PRICE_FACTOR * CURRENCY_CONVERSION_FACTOR < 100000000 THEN "); query.append(" CAST( PRICE * LANDED_RESALE_PRICE_FACTOR * CURRENCY_CONVERSION_FACTOR "); query.append(" AS DECIMAL(12,4)) ELSE 0 ENDIF AS PART_PRICE, "); query.append(" IF ISNULL( TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR, "); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" 1) <> 0 THEN ISNULL(TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR, "); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, 1) "); query.append(" ELSE 1 ENDIF AS LANDED_RESALE_PRICE_FACTOR, "); query.append(" ISNULL(SP.CURRENCY_CONVERSION_FACTOR, 1) "); query.append(" AS CURRENCY_CONVERSION_FACTOR "); query.append(" FROM CUSTOMER_FIXED_PRICING CCP LEFT OUTER JOIN INVENTORY ON CCP.LINE_ABBREV = INVENTORY.LINE_ABBREV "); query.append(" AND CCP.PART_NUMBER = INVENTORY.PART_NUMBER LEFT OUTER JOIN STORE_PROFILE "); query.append(" AS SP ON CCP.LOC = SP.LOC "); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 LEFT OUTER JOIN PRODUCT_LINE "); query.append(" AS TAILORED_GROUP ON CCP.LINE_ABBREV = TAILORED_GROUP.LINE_ABBREV "); query.append(" AND INVENTORY.GROUP_CODE = TAILORED_GROUP.GROUP_CODE "); query.append(" AND CCP.LOC = TAILORED_GROUP.LOC "); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 "); query.append(" AND (TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_COST_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_CORE_PRICE_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_CORE_COST_FACTOR <> 0) LEFT OUTER JOIN PRODUCT_LINE "); query.append(" AS GROUP_ZERO ON CCP.LINE_ABBREV = GROUP_ZERO.LINE_ABBREV "); query.append(" AND GROUP_ZERO.GROUP_CODE = 0 "); query.append(" AND CCP.LOC = GROUP_ZERO.LOC "); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 "); query.append(" AND (GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_COST_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_CORE_PRICE_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_CORE_COST_FACTOR <> 0) "); } else { query.append(" ID,LOC,CUSTOMER_ID,'F' AS REF_PRICING_TYPE_CD, "); query.append(" ' ' AS STORE_GROUP_ID, ' ' AS DEPARTMENT_ID, ' ' AS SUB_DEPARTMENT_ID, LINE_ABBREV," + " ' ' AS GROUP_CODE,PART_NUMBER AS PART_PREFIX, ' ' AS REF_CLASS_CD, ' ' AS STORE_DEPARTMENT_ID,BEGIN_DATE, END_DATE,"); query.append(" REPORTABLE,' ' AS REF_PRICE_SHEET_CD,' ' AS MARKUP_PERCENT, ' ' AS REF_CURRENCY_ROUNDING_CD, " + "PART_PRICE, NOTE,LAST_MODIFIED_DATE,MODIFIED_BY_EMPLOYEE_ID"); query.append(" FROM CUSTOMER_FIXED_PRICING CCP "); } query.append(" WHERE CCP.LOC = " + m_loc + " "); query.append(getCustomPricingQuestionAnswerSQL(true)); query.append(" AND CCP.CUSTOMER_ID = ? "); query.append(" ) R ORDER BY PRICE_TYPE, LINE_ABBREV"); logger.debug("Custom Pricing Query = "+query.toString()); m_prepStmtCP = m_conn.prepareStatement(query.toString()); } if (m_bPrintSalesInfo) { m_prepStmtCP.setString(1,customerID); m_prepStmtCP.setString(2,customerID); m_prepStmtCP.setString(3,customerID); m_prepStmtCP.setString(4,customerID); m_prepStmtCP.setString(5,customerID); m_prepStmtCP.setString(6,customerID); m_prepStmtCP.setString(7,customerID); m_prepStmtCP.setString(8,customerID); m_prepStmtCP.setString(9,customerID); m_prepStmtCP.setString(10,customerID); m_prepStmtCP.setString(11,customerID); } else { m_prepStmtCP.setString(1,customerID); m_prepStmtCP.setString(2,customerID); } ResultSet rs = m_prepStmtCP.executeQuery(); outputCustomPricing(rs); } private String getRoundingDescription(String roundingType) throws SQLException{ String retVal = null; if((retVal = (String)m_roundingCacheMap.get(roundingType)) != null) return retVal; if(m_pStmt == null){ m_pStmt = m_conn.prepareStatement("SELECT " + Sch_RefCurrencyRounding.DESCRIPTION + " FROM " + Sch_Tables.REF_CURRENCY_ROUNDING + " WHERE " + Sch_RefCurrencyRounding.CD + " = ? " ); } m_pStmt.setString(1,roundingType); ResultSet rs = m_pStmt.executeQuery(); if(rs.next()){ retVal = rs.getString(1); m_roundingCacheMap.put(roundingType,retVal); } JDBCUtil.closeResultSet(rs); return retVal; } private void writeNotes(String notes) { logger.info("> writeNotes"); if (notes != null) { appendLineBreak(); appendLine(filler(26) + m_noteLine + " 1 - " + notes.substring(0, Math.min(91, notes.length()))); if (notes.length() > 90) { appendLine(filler(26) + m_noteLine + " 2 - " + notes.substring(91, Math.min(181, notes.length()))); } if (notes.length() > 180) { appendLine(filler(26) + m_noteLine + " 3 - " + notes.substring(181, Math.min(255, notes.length()))); } appendLineBreak(); } logger.info("< writeNotes"); } /*************************************************************************** * Method Name : writeDetails * Description : This method prints the sales information in the fixed pricing, * custom pricing, installed_price, core_price for each customer * into the screen * @param : String - Header label * TsoReportColumnHeader - Display Headers * TsoReportRowFormat - Format values for each rows * Object[] - Containing the sales information values * boolean - Header print when this will true * @return : int Array - containing Previous Month and its year. * @throws : None **************************************************************************/ private void writeDetails(String hdrlbl, TsoReportColumnHeader hdr, TsoReportRowFormat rowFormat, Object[] data, boolean header) { if(getLinesRemaining() < (hdr == null ? 8 : 9)){ appendPageBreak(true); header = true; } if(header){ appendText(hdrlbl); appendLineBreak(); appendText(hdr.getText()); } else{ data[0] = " "; } appendText(rowFormat.format(data)); } private void writeDetails(TsoReportColumnHeader hdr, TsoReportRowFormat rowFormat, Object[] data, boolean header){ if(getLinesRemaining() < (hdr == null ? 8 : 9)){ appendPageBreak(true); header = true; } if(header){ appendLineBreak(); appendText(hdr.getText()); } else{ data[0] = " "; } appendText(rowFormat.format(data)); } private static final void printCriteriaMap(FwoQuestionAnswerMap map){ Iterator iterator = map.keySet().iterator(); while(iterator.hasNext()){ Object key = iterator.next(); FwoQuestionAnswer qa = (FwoQuestionAnswer) map.getQuestionAnswer(key); if(qa == null) continue; logger.info("*************************************************************"); logger.info("Type: " + qa.getAnswerType() + " Key: " + key + " Values: "); Iterator valueIterator = qa.getAnswerValues().iterator(); while(valueIterator.hasNext()){ logger.info("\t\t" + valueIterator.next()); } } } private static final String filler(int length){ StringBuffer sb = new StringBuffer(); for(int i=0; i < length; i++) sb.append(" "); return sb.toString(); } private static final void debug(String info){ logger.debug(info); } private Integer getDateFormat() { Byte bFormat = new Byte("1"); Profile myProfile = ApplicationContext.getInstance().getProfile(Profile.SERVER, m_request.getLOC().intValue()); if (myProfile != null) { bFormat = myProfile.getStoreProfile().getRefDateFormatId(); if (bFormat == null) bFormat = new Byte("1"); // reset to 1 if store profile fails } return (new Integer(bFormat.intValue())); } /************************************************************************** * Method Name : getPricingProfileSQL * Description : Excutes a query to fetch the Pricing Profile Details. * @param : None * @return : String * @throws : None *************************************************************************/ private String getPricingProfileSQL(){ StringBuffer sb = new StringBuffer(50); sb.append("SELECT DISTINCT ") .append("PRICING_PROFILE.ID AS PROFILE_NUMBER, ") .append("PRICING_PROFILE.DESCRIPTION AS DESCRIPTION, ") .append("PRICING_PROFILE.USUAL_REF_PRICE_SHEET_CD AS " + "USUAL_PRICE_PPD, ") .append("PRICING_PROFILE.USUAL_PRICE_MARKUP_PERCENT AS " + "USUAL_MARKUP_PERCENT, ") .append("PRICING_PROFILE.USUAL_PRICE_REF_CURRENCY_ROUNDING_CD AS " + "ROUND_USUAL ") .append("FROM ") .append("PRICING_PROFILE "); String reportType = getReportType(); if(reportType.equals(CUSTOMER_PRICING_ONLY) && m_bPrintPricingProfileDetails){ sb.append("INNER JOIN ") .append("CUSTOMER_PRICING_PROFILE ") .append("ON ") .append("PRICING_PROFILE.ID = " + "CUSTOMER_PRICING_PROFILE.PRICING_PROFILE_ID ") .append("AND ") .append("PRICING_PROFILE.LOC = CUSTOMER_PRICING_PROFILE.LOC ") .append("INNER JOIN ") .append("CUSTOMER ") .append("ON CUSTOMER.ID = CUSTOMER_PRICING_PROFILE.CUSTOMER_ID ") .append("AND ") .append("CUSTOMER.LOC = CUSTOMER_PRICING_PROFILE.LOC ") .append(getCustomerNumberRange()); } else if(reportType.equals(BOTH)){ if(isCustomerRangeSelected && isPricingProfileRangeSelected){ sb.append(" WHERE PRICING_PROFILE.LOC = " + m_loc + " "); sb.append(getCustomerRangeForPricingProfiles()) .append(getPricingProfileRange()); } else if(isPricingProfileRangeSelected){ sb.append(" WHERE PRICING_PROFILE.LOC = " + m_loc + " "); sb.append(getPricingProfileRange()); } else if(isCustomerRangeSelected){ sb.append(" WHERE PRICING_PROFILE.LOC = " + m_loc + " "); sb.append(getCustomerRangeForPricingProfiles()); } else{ sb.append("INNER JOIN ") .append("CUSTOMER_PRICING_PROFILE ") .append("ON ") .append("PRICING_PROFILE.ID = " + "CUSTOMER_PRICING_PROFILE.PRICING_PROFILE_ID ") .append("AND ") .append("PRICING_PROFILE.LOC = CUSTOMER_PRICING_PROFILE.LOC "); } }else if(reportType.equals(PRICING_PROFILE_ONLY)){ sb.append(" WHERE PRICING_PROFILE.LOC = " + m_loc + " ") .append(getPricingProfileRange()); } sb.append(" ORDER BY PRICING_PROFILE.ID"); return sb.toString(); } /************************************************************************** * Method Name : getReportType * Description : This method fetch the value for Report type, from the * selection criteria screen. * @param : None * @return : String * @throws : None *************************************************************************/ private String getReportType() { String reportType = ""; Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); if ((answers != null && !answers.trim().equals("") && !answers.equalsIgnoreCase("ALL") && !answers .equals("' '"))) { switch (((Integer) key).intValue()) { case TsiQuestionConstants. QUESTION_REPORT_TYPE: { if (answers.equalsIgnoreCase("'C'")) reportType = CUSTOMER_PRICING_ONLY; else if (answers.equalsIgnoreCase("'P'")) reportType = PRICING_PROFILE_ONLY; else if (answers.equalsIgnoreCase("'B'")) reportType = BOTH; } } } } } return reportType; } /*********************************************************************** * Method Name : getCustomerNumberRange * Description : This method fetches the Customer Number Range. * @param : None * @return : String * @throws : None *************************************************************************/ private String getCustomerNumberRange() { StringBuffer sb = new StringBuffer(150); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equals("' '") && !answers.equalsIgnoreCase("ALL") && !answers.equals("'A'")) || (start != null && end != null)) { switch (((Integer) key).intValue()) { case TsiQuestionConstants.QUESTION_CUSTOMER: { sb.append(" AND ").append( "CUSTOMER.CUSTOMER_NUM BETWEEN ").append(start) .append(" AND " + end + " "); } default: { continue; } } } } } return sb.toString(); } /*********************************************************************** * Method Name : getPricingProfileData * Description : This method assigns the resultset vales to an object array. * @param : Resultset, Onbject[] * @return : Object[] * @throws : throws SQLException *************************************************************************/ private Object[] getPricingProfileData(ResultSet rs, Object[] objArr) throws SQLException{ if(objArr.length != COL_TYPE6_SIZE) throw new ArrayIndexOutOfBoundsException(); objArr[0] = new Integer(rs.getInt("PROFILE_NUMBER")); objArr[1] = rs.getString("DESCRIPTION"); objArr[2] = rs.getString("USUAL_PRICE_PPD"); objArr[3] = new Integer(rs.getInt("USUAL_MARKUP_PERCENT")); objArr[4] = rs.getString("ROUND_USUAL"); return objArr; } /************************************************************************** * Method Name : getPricingProfileCustomData * Description : This method assigns the resultset vales to an object array. * @param : Resultset, Onbject[] * @return : Object[] * @throws : throws SQLException *************************************************************************/ private Object[] getPricingProfileCustomData(ResultSet rs, Object[] objArr, boolean printLabel) throws SQLException { if (objArr.length != COL_TYPE7_SIZE) throw new ArrayIndexOutOfBoundsException(); objArr[0] = ""; objArr[1] = rs.getString(Sch_CustomerCustomPricing.STORE_GROUP_ID); objArr[2] = rs.getString(Sch_CustomerCustomPricing.DEPARTMENT_ID); objArr[3] = rs.getString(Sch_CustomerCustomPricing.SUB_DEPARTMENT_ID); objArr[4] = rs.getString(Sch_CustomerCustomPricing.LINE_ABBREV); objArr[5] = rs.getString(Sch_CustomerCustomPricing.GROUP_CODE); objArr[6] = rs.getString(Sch_CustomerCustomPricing.PART_PREFIX); objArr[7] = rs.getString(Sch_CustomerCustomPricing.REF_CLASS_CD); objArr[8] = rs.getString(Sch_CustomerCustomPricing.STORE_DEPARTMENT_ID); objArr[9] = rs.getString(Sch_CustomerCustomPricing.REF_PRICE_SHEET_CD); BigDecimal bdMarkup = rs.getBigDecimal( Sch_CustomerCustomPricing.MARKUP_PERCENT); objArr[10] = (bdMarkup == null || bdMarkup.signum() == 0) ? " " : bdMarkup.toString(); objArr[11] = rs.getString(Sch_CustomerCustomPricing.REPORTABLE); objArr[12] = getRoundingDescription(rs.getString( Sch_CustomerCustomPricing.REF_CURRENCY_ROUNDING_CD)); try { objArr[13] = m_patternDate.format(rs.getDate( Sch_CustomerCustomPricing.BEGIN_DATE)); objArr[14] = m_patternDate.format(rs.getDate( Sch_CustomerCustomPricing.END_DATE)); } catch (DatePatternFormatException e) { objArr[13] = rs.getString(Sch_CustomerCustomPricing.BEGIN_DATE); objArr[14] = rs.getString(Sch_CustomerCustomPricing.END_DATE); } objArr[15] = getErrorNotation(rs) + getPriceNotation(rs); return objArr; } /************************************************************************** * Method Name : getPricingProfileDetail * Description : This method fetches the Procing Profile Details. * @param : String * @return : None * @throws : throws SQLException *************************************************************************/ private void getPricingProfileDetail(String profileID) throws SQLException{ // this will catch the first past through if(profileID == null || profileID.equals("")) return; logger.debug("> getPricingProfileDetail"); if(m_prepStmtPPD == null) { StringBuffer query = new StringBuffer(150); query.append(" SELECT * FROM ("); query.append(" SELECT "); query.append(" (CASE PPD.ref_pricing_type_cd "); query.append(" WHEN 'F' then '1' "); query.append(" WHEN 'R' then '2' "); query.append(" WHEN 'I' then '3' "); query.append(" WHEN 'C' then '4' "); query.append(" END ) as PRICE_TYPE, "); query.append(" CASE WHEN PPD.REF_PRICE_SHEET_CD = 'X' "); query.append(" AND "); query.append(" PPD.REF_PRICING_TYPE_CD = 'R' "); query.append(" THEN "); query.append(" IF EXISTS "); query.append(" (SELECT "); query.append(" P.ID "); query.append(" FROM "); query.append(" PRICING_PROFILE_DETAIL P "); query.append(" WHERE "); query.append(" P.REF_PRICING_TYPE_CD = 'I' "); query.append(" AND "); query.append(" P.PRICING_PROFILE_ID = PPD.PRICING_PROFILE_ID "); query.append(" AND "); query.append(" P.LOC = PPD.LOC "); query.append(" AND "); query.append(" (P.REF_PRICE_SHEET_CD = '0' "); query.append(" OR "); query.append(" P.REF_PRICE_SHEET_CD = '1') "); query.append(" AND "); query.append(" ISNULL(P.STORE_GROUP_ID,'') = " + "ISNULL(PPD.STORE_GROUP_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.DEPARTMENT_ID,'') = " + "ISNULL(PPD.DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.SUB_DEPARTMENT_ID,'') = " + "ISNULL(PPD.SUB_DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.LINE_ABBREV,'') = " + "ISNULL(PPD.LINE_ABBREV,'') "); query.append(" AND "); query.append(" ISNULL(P.GROUP_CODE,'') = ISNULL(PPD.GROUP_CODE,'') "); query.append(" AND "); query.append(" ISNULL(P.REF_CLASS_CD,'') = " + "ISNULL(PPD.REF_CLASS_CD,'') "); query.append(" AND "); query.append(" ISNULL(P.STORE_DEPARTMENT_ID,'') = " + "ISNULL(PPD.STORE_DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.PART_PREFIX,'') = " + "ISNULL(PPD.PART_PREFIX,'') ) "); query.append(" THEN 'X' ELSE '-' "); query.append(" ENDIF "); query.append(" ELSE "); query.append(" ' ' "); query.append(" END AS ERROR_NOTE_R, "); query.append(" CASE WHEN PPD.REF_PRICING_TYPE_CD = 'I' "); query.append(" AND "); query.append(" (PPD.REF_PRICE_SHEET_CD = '0' "); query.append(" OR "); query.append(" PPD.REF_PRICE_SHEET_CD = '1') "); query.append(" THEN "); query.append(" IF EXISTS "); query.append(" (select "); query.append(" P.ID "); query.append(" FROM "); query.append(" PRICING_PROFILE_DETAIL P "); query.append(" WHERE "); query.append(" P.REF_PRICING_TYPE_CD = 'R' "); query.append(" AND "); query.append(" P.PRICING_PROFILE_ID = PPD.PRICING_PROFILE_ID "); query.append(" AND "); query.append(" P.LOC = PPD.LOC "); query.append(" AND "); query.append(" P.REF_PRICE_SHEET_CD = 'X' "); query.append(" AND "); query.append(" ISNULL(P.STORE_GROUP_ID,'') = " + "ISNULL(PPD.STORE_GROUP_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.DEPARTMENT_ID,'') = " + "ISNULL(PPD.DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.SUB_DEPARTMENT_ID,'') = " + "ISNULL(PPD.SUB_DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.LINE_ABBREV,'') = " + "ISNULL(PPD.LINE_ABBREV,'') "); query.append(" AND "); query.append(" ISNULL(P.GROUP_CODE,'') = ISNULL(PPD.GROUP_CODE,'') "); query.append(" AND "); query.append(" ISNULL(P.REF_CLASS_CD,'') = " + "ISNULL(PPD.REF_CLASS_CD,'') "); query.append(" AND "); query.append(" ISNULL(P.STORE_DEPARTMENT_ID,'') = " + "ISNULL(PPD.STORE_DEPARTMENT_ID,'') "); query.append(" AND "); query.append(" ISNULL(P.PART_PREFIX,'') = " + "ISNULL(PPD.PART_PREFIX,'') ) "); query.append(" then 'X' ELSE ' ' "); query.append(" ENDIF "); query.append(" ELSE "); query.append(" ' ' "); query.append(" END AS ERROR_NOTE_I, "); if (isLandedMode && pricingModeValue.equalsIgnoreCase(LANDED_PRICING)) { query.append("PPD.ID AS ID , PPD.LOC AS LOC,"); query.append(" PPD.PRICING_PROFILE_ID AS PRICING_PROFILE_ID,"); query.append(" PPD.REF_PRICING_TYPE_CD ASREF_PRICING_TYPE_CD,"); query.append(" PPD.STORE_GROUP_ID AS STORE_GROUP_ID,"); query.append(" PPD.DEPARTMENT_ID AS DEPARTMENT_ID,"); query.append(" PPD.SUB_DEPARTMENT_ID AS SUB_DEPARTMENT_ID,"); query.append(" PPD.LINE_ABBREV AS LINE_ABBREV,"); query.append(" IF (PPD.REF_PRICING_TYPE_CD = 'F') THEN"); query.append(" ISNULL(INVENTORY.GROUP_CODE, 0)"); query.append("ELSE PPD.GROUP_CODE ENDIF AS GROUP_CODE,"); query.append(" PPD.PART_PREFIX AS PART_PREFIX,"); query.append(" PPD.REF_CLASS_CD AS REF_CLASS_CD,"); query.append(" PPD.STORE_DEPARTMENT_ID AS STORE_DEPARTMENT_ID,"); query.append(" PPD.REPORTABLE AS REPORTABLE,"); query.append(" PPD.BEGIN_DATE AS BEGIN_DATE,"); query.append(" PPD.END_DATE AS END_DATE,"); query.append(" PPD.REF_PRICE_SHEET_CD AS REF_PRICE_SHEET_CD,"); query.append(" PPD.MARKUP_PERCENT AS MARKUP_PERCENT,"); query.append(" PPD.REF_CURRENCY_ROUNDING_CD AS REF_CURRENCY_ROUNDING_CD,"); query.append(" 0 AS PRICE,"); query.append(" PPD.LAST_MODIFIED_DATE AS LAST_MODIFIED_DATE,"); query.append(" PPD.MODIFIED_BY_EMPLOYEE_ID AS MODIFIED_BY_EMPLOYEE_ID,"); query.append(" PPD.NOTE AS NOTE, PPD.PART_PREFIX AS PART_PREFIX1,"); query.append(" CAST(( SELECT STORE_GROUP.STORE_GROUP_NUM"); query.append(" FROM STORE_GROUP"); query.append(" WHERE PPD.STORE_GROUP_ID = STORE_GROUP.ID"); query.append(" AND PPD.LOC = STORE_GROUP.LOC ) AS VARCHAR(10)) AS STORE_GROUP_NUM,"); query.append(" IF PRICE * LANDED_RESALE_PRICE_FACTOR *"); query.append(" CURRENCY_CONVERSION_FACTOR < 100000000"); query.append(" THEN CAST( PRICE * LANDED_RESALE_PRICE_FACTOR *"); query.append(" CURRENCY_CONVERSION_FACTOR AS DECIMAL(12, 4))"); query.append(" ELSE 0 ENDIF AS PART_PRICE,"); query.append(" IF ISNULL( TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR,"); query.append(" SP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" 1) <> 0 THEN ISNULL(TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR,"); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR,"); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, 1)"); query.append(" ELSE 1 ENDIF AS LANDED_RESALE_PRICE_FACTOR,"); query.append(" ISNULL(SP.CURRENCY_CONVERSION_FACTOR, 1)"); query.append(" AS CURRENCY_CONVERSION_FACTOR"); query.append(" FROM PRICING_PROFILE_DETAIL PPD LEFT OUTER JOIN INVENTORY ON"); query.append(" PPD.LINE_ABBREV = INVENTORY.LINE_ABBREV"); query.append(" AND PPD.PART_PREFIX = INVENTORY.PART_NUMBER"); query.append(" LEFT OUTER JOIN STORE_PROFILE"); query.append(" AS SP ON PPD.LOC = SP.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 LEFT OUTER JOIN PRODUCT_LINE"); query.append(" AS TAILORED_GROUP ON PPD.LINE_ABBREV = TAILORED_GROUP.LINE_ABBREV"); query.append(" AND INVENTORY.GROUP_CODE = TAILORED_GROUP.GROUP_CODE"); query.append(" AND PPD.LOC = TAILORED_GROUP.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0"); query.append(" AND (TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_COST_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_CORE_PRICE_FACTOR <> 0"); query.append(" OR TAILORED_GROUP.LANDED_CORE_COST_FACTOR <> 0)"); query.append(" LEFT OUTER JOIN PRODUCT_LINE"); query.append(" AS GROUP_ZERO ON PPD.LINE_ABBREV = GROUP_ZERO.LINE_ABBREV"); query.append(" AND GROUP_ZERO.GROUP_CODE = 0"); query.append(" AND PPD.LOC = GROUP_ZERO.LOC"); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0"); query.append(" AND (GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_COST_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_CORE_PRICE_FACTOR <> 0"); query.append(" OR GROUP_ZERO.LANDED_CORE_COST_FACTOR <> 0)"); }else { query.append(" ID, LOC, PRICING_PROFILE_ID, REF_PRICING_TYPE_CD, STORE_GROUP_ID, DEPARTMENT_ID, SUB_DEPARTMENT_ID, "); query.append(" LINE_ABBREV, GROUP_CODE, PART_PREFIX, REF_CLASS_CD, STORE_DEPARTMENT_ID, BEGIN_DATE, END_DATE, "); query.append(" REPORTABLE, REF_PRICE_SHEET_CD, MARKUP_PERCENT, REF_CURRENCY_ROUNDING_CD, NULL AS PART_PRICE, NOTE, "); query.append(" LAST_MODIFIED_DATE, MODIFIED_BY_EMPLOYEE_ID "); query.append(" FROM PRICING_PROFILE_DETAIL PPD"); } query.append(" WHERE "); query.append(" PPD.LOC = " + m_loc + " "); query.append(getPricingProfileDetailQuestionAnswerSQL(false)); query.append(" AND "); query.append(" PPD.PRICING_PROFILE_ID = ? "); query.append(" UNION ALL "); query.append(" SELECT '1' AS PRICE_TYPE,"); query.append("' ' AS ERROR_NOTE_R,"); query.append("' ' AS ERROR_NOTE_I,"); if (isLandedMode && pricingModeValue.equalsIgnoreCase(LANDED_PRICING)) { query.append("PPD.ID AS ID ,"); query.append(" PPD.LOC AS LOC, "); query.append(" PPD.PRICING_PROFILE_ID AS PRICING_PROFILE_ID, "); query.append(" 'F' AS REF_PRICING_TYPE_CD, "); query.append("NULL AS STORE_GROUP_ID, "); query.append(" NULL AS DEPARTMENT_ID, "); query.append(" NULL AS SUB_DEPARTMENT_ID, "); query.append(" PPD.LINE_ABBREV AS LINE_ABBREV, "); query.append("ISNULL(INVENTORY.GROUP_CODE, 0)AS GROUP_CODE, "); query.append(" PPD.PART_NUMBER AS PART_PREFIX, "); query.append(" ' ' AS REF_CLASS_CD, "); query.append("NULL AS STORE_DEPARTMENT_ID, "); query.append(" PPD.REPORTABLE AS REPORTABLE, "); query.append("PPD.BEGIN_DATE AS BEGIN_DATE, "); query.append(" PPD.END_DATE AS END_DATE, "); query.append(" ' ' AS REF_PRICE_SHEET_CD, "); query.append(" 0 AS MARKUP_PERCENT, "); query.append(" ' ' AS REF_CURRENCY_ROUNDING_CD, "); query.append(" 0 AS PRICE, "); query.append(" PPD.LAST_MODIFIED_DATE "); query.append(" AS LAST_MODIFIED_DATE, "); query.append(" PPD.MODIFIED_BY_EMPLOYEE_ID "); query.append("AS MODIFIED_BY_EMPLOYEE_ID, "); query.append(" PPD.NOTE AS NOTE, "); query.append(" PPD.PART_NUMBER AS PART_PREFIX1, "); query.append(" ' ' AS STORE_GROUP_NUM, "); query.append(" IF PRICE * LANDED_RESALE_PRICE_FACTOR * CURRENCY_CONVERSION_FACTOR < 100000000 THEN " + "CAST( PRICE * LANDED_RESALE_PRICE_FACTOR * CURRENCY_CONVERSION_FACTOR "); query.append(" AS DECIMAL(12, 4)) "); query.append(" ELSE 0 ENDIF AS PART_PRICE, "); query.append(" IF ISNULL( TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR, "); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" 1) <> 0 THEN ISNULL(TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR, "); query.append(" GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR, "); query.append(" SP.LANDED_RESALE_PRICE_FACTOR, 1) "); query.append("ELSE 1 ENDIF AS LANDED_RESALE_PRICE_FACTOR, "); query.append(" ISNULL(SP.CURRENCY_CONVERSION_FACTOR, 1) AS CURRENCY_CONVERSION_FACTOR "); query.append(" FROM PRICING_PROFILE_FIXED_DETAIL PPD LEFT OUTER JOIN INVENTORY ON PPD.LINE_ABBREV = INVENTORY.LINE_ABBREV "); query.append("AND PPD.PART_NUMBER = INVENTORY.PART_NUMBER LEFT OUTER JOIN STORE_PROFILE "); query.append(" AS SP ON PPD.LOC = SP.LOC "); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 LEFT OUTER JOIN PRODUCT_LINE "); query.append("AS TAILORED_GROUP ON PPD.LINE_ABBREV = TAILORED_GROUP.LINE_ABBREV "); query.append(" AND INVENTORY.GROUP_CODE = TAILORED_GROUP.GROUP_CODE "); query.append(" AND PPD.LOC = TAILORED_GROUP.LOC "); query.append(" AND SP.CURRENCY_CONVERSION_FACTOR <> 0 "); query.append(" AND (TAILORED_GROUP.LANDED_RESALE_PRICE_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_COST_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_CORE_PRICE_FACTOR <> 0 "); query.append(" OR TAILORED_GROUP.LANDED_CORE_COST_FACTOR <> 0) LEFT OUTER JOIN PRODUCT_LINE "); query.append(" AS GROUP_ZERO ON PPD.LINE_ABBREV = GROUP_ZERO.LINE_ABBREV "); query.append(" AND GROUP_ZERO.GROUP_CODE = 0 "); query.append(" AND PPD.LOC = GROUP_ZERO.LOC "); query.append("AND SP.CURRENCY_CONVERSION_FACTOR <> 0 "); query.append(" AND (GROUP_ZERO.LANDED_RESALE_PRICE_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_COST_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_CORE_PRICE_FACTOR <> 0 "); query.append(" OR GROUP_ZERO.LANDED_CORE_COST_FACTOR <> 0) "); }else { query.append(" ID, LOC, PRICING_PROFILE_ID, 'F' AS REF_PRICING_TYPE_CD, NULL AS STORE_GROUP_ID, NULL AS DEPARTMENT_ID, NULL AS SUB_DEPARTMENT_ID, "); query.append(" LINE_ABBREV,NULL AS GROUP_CODE, PART_NUMBER AS PART_PREFIX, ' ' AS REF_CLASS_CD, NULL AS STORE_DEPARTMENT_ID, BEGIN_DATE, END_DATE, "); query.append(" REPORTABLE, ' ' AS REF_PRICE_SHEET_CD, ' ' AS MARKUP_PERCENT, ' ' AS REF_CURRENCY_ROUNDING_CD, PART_PRICE, NOTE, "); query.append(" LAST_MODIFIED_DATE, MODIFIED_BY_EMPLOYEE_ID "); query.append(" FROM PRICING_PROFILE_FIXED_DETAIL PPD "); } query.append(" WHERE "); query.append(" PPD.LOC = " + m_loc + " "); query.append(getPricingProfileDetailQuestionAnswerSQL(true)); query.append(" AND "); query.append(" PPD.PRICING_PROFILE_ID = ? "); query.append(" ) R ORDER BY "); query.append(" PRICE_TYPE, "); query.append(" LINE_ABBREV "); logger.debug("Pricing Profile Detail Query = "+query.toString()); m_prepStmtPPD = m_conn.prepareStatement(query.toString()); } m_prepStmtPPD.setString(1,profileID); m_prepStmtPPD.setString(2,profileID); ResultSet rs = m_prepStmtPPD.executeQuery(); isPricingProfileCustomDetails = false; outputCustomPricing(rs); } /************************************************************************** * Method Name : getPricingProfileDetailQuestionAnswerSQL * Description : This method builds the WHERE clause fo the query for * fetching Pricing Profile Details based on the * the selected values for part, line and group etc.. * @param : String * @return : None * @throws : None *************************************************************************/ private String getPricingProfileDetailQuestionAnswerSQL(boolean isFixedPricing){ logger.info("> getPricingProfileDetailQuestionAnswerSQL"); StringBuffer sb = new StringBuffer(150); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equalsIgnoreCase("ALL") && !answers.equals("' '")) || (start != null && end != null)) { switch (((Integer)key).intValue()) { case TsiQuestionConstants.QUESTION_PRICESHEET:{ if (!isFixedPricing){ sb.append(" AND PPD"+ ".REF_PRICE_SHEET_CD " + "IN(" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_STOREGROUP:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing.STORE_GROUP_ID + " IN (" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_DEPARTMENT:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing.DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_SUBDEPARTMENT:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing. SUB_DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_STOREDEPARTMENT:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing. STORE_DEPARTMENT_ID + " IN (" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_PREFIX:{ sb.append(" AND PPD." + (isFixedPricing? "PART_NUMBER" :Sch_CustomerCustomPricing.PART_PREFIX ) + " IN (" + answers + ")"); continue; } case TsiQuestionConstants.QUESTION_CLASS:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing.REF_CLASS_CD + " IN (" + answers + ")"); } else { sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_REPORTABLESTATUS:{ String type = null; if(answers.equalsIgnoreCase("'R'")) type = "'Y'"; else if(answers.equalsIgnoreCase("'N'")) type = "'N'"; else continue; sb.append(" AND PPD." + Sch_CustomerCustomPricing. REPORTABLE + " = " + type); continue; } case TsiQuestionConstants.QUESTION_CUSTOMPRICINGTYPE:{ if (!isFixedPricing ) { sb.append(" AND PPD." + Sch_CustomerCustomPricing. REF_PRICING_TYPE_CD + " IN (" + answers + ")"); } else if (answers.indexOf("F") == -1){ sb.append(" AND PPD.PRICING_PROFILE_ID = -1 "); } continue; } case TsiQuestionConstants.QUESTION_PRODLINE:{ sb.append(" AND PPD." + Sch_CustomerCustomPricing.LINE_ABBREV + " IN (" + answers + ")"); continue; } case TsiQuestionConstants.QUESTION_GROUP:{ if (!isFixedPricing){ sb.append(" AND PPD." + Sch_CustomerCustomPricing.GROUP_CODE + " IN (" + answers + ")"); } continue; } case TsiQuestionConstants.QUESTION_DATERANGE2:{ sb.append(" AND ((PPD.BEGIN_DATE IS NOT NULL ") .append("AND PPD.BEGIN_DATE BETWEEN " + "DATE('" + start +"') ") .append("AND DATE('" + end +"') ") .append("AND PPD.END_DATE IS NOT NULL ") .append("AND PPD.END_DATE BETWEEN " + "DATE('" + start + "') ") .append("AND DATE('" + end +"')) ") .append("OR (PPD.BEGIN_DATE IS NULL AND " + "PPD.END_DATE IS NOT NULL ") .append("AND PPD.END_DATE BETWEEN " + "DATE('" + start + "') ") .append("AND DATE('" + end +"')) ") .append(" OR (PPD.BEGIN_DATE IS NOT NULL ") .append("AND PPD.BEGIN_DATE BETWEEN " + "DATE('" + start +"') ") .append("AND DATE('" + end +"') ") .append("AND PPD.END_DATE IS NULL))"); continue; } default:{ continue; } } } } } logger.debug("< getPricingProfileDetailQuestionAnswerSQL " + sb.toString()); return sb.toString(); } /*********************************************************************** * Method Name : getCustomerRangeQuestionAnswerSQL * Description : This method fetches the Customer Number Range. * @param : None * @return : String * @throws : None *************************************************************************/ private String getCustomerRangeForPricingProfiles() { StringBuffer sb = new StringBuffer(150); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equals("' '") && !answers.equalsIgnoreCase("ALL") && !answers.equals("'A'")) || (start != null && end != null)) { switch (((Integer) key).intValue()) { case TsiQuestionConstants.QUESTION_CUSTOMER: { sb.append(" AND "); sb.append("PRICING_PROFILE.ID IN "); sb.append("(SELECT DISTINCT PRICING_PROFILE_ID FROM CUSTOMER_PRICING_PROFILE "); sb.append("WHERE CUSTOMER_ID IN "); sb.append("(SELECT ID FROM CUSTOMER WHERE CUSTOMER_NUM "); sb.append("BETWEEN " + start + " AND " + end + ")) "); } default: { continue; } } } } } return sb.toString(); } /*********************************************************************** * Method Name : getPricingProfileRange * Description : This method fetches the Pricing Profile Number Range. * @param : None * @return : String * @throws : None *************************************************************************/ private String getPricingProfileRange() { StringBuffer sb = new StringBuffer(150); Iterator iterator = m_Map.keySet().iterator(); FwoQuestionAnswer qa = null; Object key = null; printCriteriaMap(m_Map); while (iterator.hasNext()) { key = iterator.next(); qa = (FwoQuestionAnswer) m_Map.getQuestionAnswer(key); if (qa != null) { ArrayList answerBeginEnd = getAnswerBeginEnd(qa); String answers = (String) answerBeginEnd.get(0); String start = (String) answerBeginEnd.get(1); String end = (String) answerBeginEnd.get(2); if ((answers != null && !answers.trim().equals("") && !answers.equals("' '") && !answers.equalsIgnoreCase("ALL") && !answers.equals("'A'")) || (start != null && end != null)) { switch (((Integer) key).intValue()) { case TsiQuestionConstants.QUESTION_PRICING_PROFILE_NUMBER: { if(getReportType().equals(BOTH) && isPricingProfileRangeSelected && !isCustomerRangeSelected) { sb.append(" AND "); sb.append("(PRICING_PROFILE.ID IN "); sb.append("(SELECT DISTINCT PRICING_PROFILE_ID FROM "); sb.append("CUSTOMER_PRICING_PROFILE "); sb.append("WHERE PRICING_PROFILE_ID BETWEEN "); sb.append(start + " AND " + end + "))"); } else { sb.append(" AND "); sb.append(" (PRICING_PROFILE.ID BETWEEN "); sb.append(start + " AND " + end + ")"); } } default: { continue; } } } } } return sb.toString(); } }