/** * Get (or make) the current record for this reference. */ public Record makeReferenceRecord(RecordOwner recordOwner) { return new TourHeader(recordOwner); } /**
/** * Get the tour cost for the pax category. */ public double getTourCost(Date dateTarget, TourMessageData productMessageData, boolean bGetPrice) { return this.getTourCost(dateTarget, TourHeaderOption.TOUR, this.getField(TourHeader.ID), productMessageData, bGetPrice); } /**
this.addNew(); this.getField(TourHeader.DESCRIPTION).setString(strSave); strSave = this.getField(TourHeader.DESC_SORT).toString(); this.addNew(); FileListener fileBehavior = new StringSubFileFilter(strSave, TourHeader.DESC_SORT, null, null, null, null); this.addListener(fileBehavior); FileListener fileBehavior2 = null; if (fldDepartureDate.getLength() != 0) this.addListener(fileBehavior2); this.setKeyArea(TourHeader.DESC_SORT_KEY); this.close(); boolean bHasNext = this.hasNext(); if (bHasNext) this.next(); this.getField(TourHeader.DESCRIPTION).setEnabled(true); this.setKeyArea(TourHeader.ID_KEY); this.removeListener(fileBehavior, true); if (fileBehavior2 != null) this.removeListener(fileBehavior2, true); if (!bHasNext) this.addNew(); this.addNew(); FileListener fileBehavior = new StringSubFileFilter(strSave, TourHeader.CODE, null, null, null, null); this.addListener(fileBehavior); FileListener fileBehavior2 = null;
TourHeader recTourHeader = (TourHeader)((ReferenceField)recTour.getField(Tour.TOUR_HEADER_ID)).getReferenceRecord(this.findRecordOwner()); try { recTourHeader.addNew(); recTourHeader.setKeyArea(Tour.ID_KEY); recTourHeader.getCounterField().setData(objID); if (recTourHeader.seek(DBConstants.EQUALS)) } finally { recTour.free(); recTourHeader.free();
if ((recTourHeader.getEditMode() == DBConstants.EDIT_ADD) || (recTourHeader.getEditMode() == DBConstants.EDIT_NONE)) if (recTourHeader.setHandle(objProductID, DBConstants.OBJECT_ID_HANDLE) != null) TourTypeField fldTourType = (TourTypeField)(RecordReferenceField)recTourHeader.getField(TourHeader.TOUR_TYPE); int iTourTypeMask = fldTourType.getBitsToCheck(); if ((iHeaderTourType & (int)recTourHeader.getField(TourHeader.TOUR_TYPE).getValue() & iTourTypeMask) == 0) bAddDetail = true; // This is a module
if ((m_recTourHeader.getEditMode() != DBConstants.EDIT_CURRENT) && (m_recTourHeader.getEditMode() != DBConstants.EDIT_IN_PROGRESS)) iErrorCode = ((TourHeader)m_recTourHeader).lookupTourHdr(m_fldTourCode, m_fldDepDate, m_fldTourDesc, bDisplayOption); if ((iErrorCode == DBConstants.NORMAL_RETURN) & (m_fldDepDate.getLength() != 0)) || (m_recTour.getField(TourModel.TOUR_HEADER_ID).compareTo(m_recTourHeader.getField(TourHeader.ID)) != 0))
m_recTourHeaderPricing = new TourHeaderLine(this.findRecordOwner()); if (m_recTourHeaderPricing.getRecordOwner() != null) m_recTourHeaderPricing.getRecordOwner().removeRecord(m_recTourHeaderPricing); ProductRateResponseMessageData responseProductMessageData = (ProductRateResponseMessageData)responseMessage.getMessageDataDesc(ProductRateResponse.PRODUCT_RESPONSE_MESSAGE); double dTotalLocalCost = this.getTourCost(dateTarget, productMessageData, false); double dTotalLocalPrice = this.getTourCost(dateTarget, productMessageData, true); this.getField(TourHeader.CLASS_ID).setValue(iTourClassID); this.getField(TourHeader.PP_COST).setValue(dTourCost); this.getField(TourHeader.PP_PRICE_LOCAL).setValue(dTourPrice); this.getField(Product.PRODUCT_COST).setValue(dTotalLocalCost); this.getField(Product.PRODUCT_PRICE_LOCAL).setValue(dTotalLocalPrice); responseProductMessageData.setPPCost(this.getField(TourHeader.PP_COST).getValue()); if (iTourClassID != productMessageData.getRateClassID()) iStatus = BaseStatus.NOT_VALID; responseMessage.setMessageDataStatus(iStatus); this.getField(Product.DISPLAY_COST_STATUS_ID).setValue(iStatus); return messageReply;
/** * Get the correct remote tour header for this product. */ public TourHeader getBookingTourHeader(BookingControl recBookingControl) { if (this.getField(TourHeader.TOUR_SERIES).getState() == true) return this; // This is a valid tour header, don't need to set one up if (recBookingControl != null) if (!recBookingControl.getField(BookingControl.TOUR_HEADER_TOUR_TYPE).isNull()) if ((this.getEditMode() == DBConstants.EDIT_CURRENT) || (this.getEditMode() == DBConstants.EDIT_IN_PROGRESS)) { TourTypeField fldTourType = (TourTypeField)recBookingControl.getField(BookingControl.TOUR_HEADER_TOUR_TYPE); int iTourTypeMask = fldTourType.getBitsToCheck(); int iTourHeaderTourType = (int)recBookingControl.getField(BookingControl.TOUR_HEADER_TOUR_TYPE).getValue(); if ((iTourHeaderTourType & (int)this.getField(TourHeader.TOUR_TYPE).getValue() & iTourTypeMask) != 0) return this; // This is a valid tour header, don't need to set one up } return super.getBookingTourHeader(recBookingControl); } /**
if (this.getField(TourHeader.TOUR_SERIES).getState() == true)
/** * Create a popup control using this record. */ public ScreenComponent createTourHeaderPopup(ScreenLoc itsLocation, ComponentParent parentScreen, Converter converter, int iDisplayFieldDesc, BaseField fldDepartureDate, BaseField fldStartDate, BaseField fldEndDate, BaseField fldTourType) { Date dateTarget = new Date(); long ltargetDate = (long)dateTarget.getTime(); if ((long)fldDepartureDate.getValue() != 0) if ((long)fldDepartureDate.getValue() < ltargetDate) ltargetDate = (long)fldDepartureDate.getValue(); fldStartDate.setValue(ltargetDate); Calendar nextYear = Calendar.getInstance(); nextYear.add(Calendar.YEAR, 1); nextYear.set(Calendar.HOUR_OF_DAY, 0); nextYear.set(Calendar.MINUTE, 0); nextYear.set(Calendar.SECOND, 0); nextYear.set(Calendar.MILLISECOND, 0); ltargetDate = nextYear.getTime().getTime(); fldEndDate.setValue(Math.max(ltargetDate, (long)fldDepartureDate.getValue())); FileListener fileBehavior = new ExtractRangeFilter(TourHeader.START_DATE, fldStartDate, TourHeader.END_DATE, fldEndDate, ExtractRangeFilter.PAD_DEFAULT); this.addListener(fileBehavior); this.setKeyArea(TourHeader.DESC_SORT_KEY); ScreenComponent screenField = BaseField.createScreenComponent(ScreenModel.POPUP_BOX, itsLocation, parentScreen, converter, iDisplayFieldDesc, null); this.removeListener(fileBehavior, true); return screenField; } /**
/** * ChangeMessageBookingDetail Method. */ public int changeMessageBookingDetail(BookingDetailModel recBookingDetail, BookingModel recBooking, TourModel recTour, String strMessageTransportID, MessageRecordDesc productRequest) throws DBException { if (this.getField(TourHeader.TOUR_SERIES).getState() == true) { ProductMessageData productMessage = (ProductMessageData)productRequest.getMessageDataDesc(ProductRequest.PRODUCT_MESSAGE); Date date = (Date)productMessage.get(BookingDetailModel.DETAIL_DATE); if (date != null) { // Departure date change. TourClass recTourClass = (TourClass)((ReferenceField)this.getField(TourHeader.TOUR_CLASS_ID)).getReferenceRecord(this.findRecordOwner()); BaseField fldTourCode = this.getField(TourHeader.CODE); DateField fldDepartureDate = (DateField)recTour.getField(TourModel.DEPARTURE_DATE); BaseField fldTourDesc = this.getField(TourHeader.DESCRIPTION); FieldListener fieldBehavior = null; fieldBehavior = new ChangeTourHeaderHandler(this, recTourClass, (TourModel)recTour, (BookingModel)recBooking, fldTourCode, fldDepartureDate, null); fldDepartureDate.addListener(fieldBehavior); fldDepartureDate.setDateTime(date, DBConstants.DISPLAY, DBConstants.SCREEN_MOVE); // +message.addPassengersToBooking(recBooking); // +message.addContactToBooking(recBooking); } return DBConstants.NORMAL_RETURN; // For tour headers, the detail is the header, so no detail must be changed } return super.changeMessageBookingDetail(recBookingDetail, recBooking, recTour, strMessageTransportID, productRequest); } /**
TourHeader recTourHeader = (TourHeader)this.getProduct(); if ((recTourHeader == null) || (recTourHeader.getEditMode() == DBConstants.EDIT_NONE)) return DBConstants.ERROR_RETURN; Date dateStart = ((DateTimeField)this.getField(BookingDetail.DETAIL_DATE)).getDateTime();
FieldListener behCheckRange = new CheckRangeHandler(0, 2); screenRecord.getField(TourHeaderScreenRecord.KEY_ORDER).addListener(behCheckRange); recTourHeader.addListener(new FileRemoveBOnCloseHandler(behCheckRange)); KeyArea tempKeyStart = recTourHeader.makeIndex(DBConstants.NOT_UNIQUE, null); // Add temp key tempKeyStart.addKeyField(TourHeader.START_DATE, DBConstants.ASCENDING); KeyArea tempKeyEnd = recTourHeader.makeIndex(DBConstants.NOT_UNIQUE, null); tempKeyEnd.addKeyField(TourHeader.END_DATE, DBConstants.ASCENDING); SortOrderHandler behQueryKeyHandler = new SortOrderHandler(this); recTourHeader.addListener(new CompareFileFilter(TourHeader.BROCHURE_ID, screenRecord.getField(TourHeaderScreenRecord.BROCHURE_ID), "=", null, true)); screenRecord.getField(TourHeaderScreenRecord.BROCHURE_ID).addListener(new FieldReSelectHandler(this)); BitFileFilter filter = new BitFileFilter(TourHeader.TOUR_TYPE, screenRecord.getField(TourHeaderScreenRecord.TOUR_TYPE)); filter.setNoFilterIfNone(true); recTourHeader.addListener(filter); screenRecord.getField(TourHeaderScreenRecord.TOUR_TYPE).addListener(new FieldReSelectHandler(this)); recTourHeader.addListener(new CompareFileFilter(TourHeader.AIRLINE_ID, screenRecord.getField(TourHeaderScreenRecord.AIRLINE_ID), "=", null, true)); screenRecord.getField(TourHeaderScreenRecord.AIRLINE_ID).addListener(new FieldReSelectHandler(this)); recTourHeader.addListener(new CompareFileFilter(TourHeader.END_DATE, screenRecord.getField(TourHeaderScreenRecord.START_DEPARTURE_DATE), ">=", null, true)); screenRecord.getField(TourHeaderScreenRecord.START_DEPARTURE_DATE).addListener(new FieldReSelectHandler(this)); recTourHeader.addListener(new CompareFileFilter(TourHeader.START_DATE, screenRecord.getField(TourHeaderScreenRecord.END_DEPARTURE_DATE), "<=", null, true)); screenRecord.getField(TourHeaderScreenRecord.END_DEPARTURE_DATE).addListener(new FieldReSelectHandler(this)); recTourHeader.addListener(new CompareFileFilter(TourHeader.REGION_ID, screenRecord.getField(TourHeaderScreenRecord.REGION_ID), "=", null, true)); screenRecord.getField(TourHeaderScreenRecord.REGION_ID).addListener(new FieldReSelectHandler(this)); recTourHeader.addListener(new CompareFileFilter(TourHeader.VENDOR_ID, screenRecord.getField(TourHeaderScreenRecord.VENDOR_ID), "=", null, true)); screenRecord.getField(TourHeaderScreenRecord.VENDOR_ID).addListener(new FieldReSelectHandler(this)); FieldListener behInitOnChange = new InitOnChangeHandler(screenRecord.getField(TourHeaderScreenRecord.DESCRIPTION)); screenRecord.getField(TourHeaderScreenRecord.KEY_ORDER).addListener(behInitOnChange);
this.addListener(new SubFileIntegrityHandler(TourModel.class.getName(), false)); this.addListener(new SubFileIntegrityHandler(TourHeaderInventoryModel.class.getName(), false)); this.addListener(new SubFileIntegrityHandler(TourHeaderOption.class.getName(), false)
if (iKeyArea == 0) keyArea = this.makeIndex(DBConstants.UNIQUE, ID_KEY); keyArea.addKeyField(ID, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.SECONDARY_KEY, CODE_KEY); keyArea.addKeyField(CODE, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, DESC_SORT_KEY); keyArea.addKeyField(DESC_SORT, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, VENDOR_ID_KEY); keyArea.addKeyField(VENDOR_ID, DBConstants.ASCENDING); keyArea.addKeyField(DESC_SORT, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, CITY_ID_KEY); keyArea.addKeyField(CITY_ID, DBConstants.ASCENDING); keyArea.addKeyField(DESC_SORT, DBConstants.ASCENDING);
public void done() { // 'Please wait...' is done displaying String strCommand = "addTourDetail"; Map<String,Object> properties = new HashMap<String,Object>(); properties.put(TourHeader.TOUR_HEADER_FILE, m_recTourHeader.getCounterField().getData()); properties.put(m_recTour.getField(TourModel.DEPARTURE_DATE).getFieldName(), m_recTour.getField(TourModel.DEPARTURE_DATE).getData()); Object objReturn; try { objReturn = ((Record)m_recBooking).handleRemoteCommand(strCommand, properties); } catch (RemoteException e) { e.printStackTrace(); objReturn = Boolean.FALSE; } catch (DBException e) { e.printStackTrace(); objReturn = Boolean.FALSE; } if (Boolean.FALSE.equals(objReturn)) { BookingAnswerModel recBookingAnswer = null; // This causes addTourDetail to resolve the answers automatically BookingPaxModel recBookingPax = null; Date dateStart = ((DateTimeField)m_recTour.getField(TourModel.DEPARTURE_DATE)).getDateTime(); // Use tour departure date. ((BookingModel)m_recBooking).addTourDetail(m_recTour, m_recTourHeader, recBookingPax, recBookingAnswer, dateStart, m_recBooking.getField(BookingModel.ASK_FOR_ANSWER)); } } };
iTargetPax = intPax.intValue(); TourHeaderOption recTourHeaderOption = new TourHeaderOption(this.findRecordOwner()); PaxCategory recPaxCategory = new PaxCategory(this.findRecordOwner()); TourHeaderLine recTourHeaderPricing = new TourHeaderLine(this.findRecordOwner()); try { recTourHeaderOption.setKeyArea(TourHeaderOption.TOUR_OR_OPTION_KEY); double dRoomCost = this.getTourCost(recTourHeaderPricing, recTourHeaderOption, recPaxCategory.getField(PaxCategory.ID), bGetPrice); dCostTotal += dRoomCost * shPaxInRoomType; if (recTourHeaderOption.getField(TourHeaderOption.DETAIL_OPTION_COUNT).getValue() > 0) dCostTotal += this.getTourCost(dateTarget, TourHeaderOption.OPTION, recTourHeaderOption.getField(TourHeaderOption.ID), productMessageData, bGetPrice); this.getField(Product.PRODUCT_COST).setValue(dCostTotal); int iCostStatus = CostStatus.VALID; this.getField(Product.DISPLAY_COST_STATUS_ID).setValue(iCostStatus); return dCostTotal;
BaseField fldDepartureDate = recTour.getField(Tour.DEPARTURE_DATE); TourHeader recTourHeader = (TourHeader)this.getHeaderRecord(); TourClass recTourClass= (TourClass)((ReferenceField)recTourHeader.getField(TourHeader.TOUR_CLASS_ID)).getReferenceRecord(); Booking recBooking = null; BaseField fldTourDesc = recTour.getField(Tour.DESCRIPTION);
|| ((recTourHeader.getEditMode() == DBConstants.EDIT_ADD) || (recTourHeader.getEditMode() == DBConstants.EDIT_NONE))) recTourHeader = (TourHeader)((ReferenceField)recBookingControl.getField(BookingControl.TOUR_HEADER_ID)).getReference(); if ((recTourHeader == null) || ((recTourHeader.getEditMode() != DBConstants.EDIT_CURRENT) && (recTourHeader.getEditMode() != DBConstants.EDIT_IN_PROGRESS))) return recordOwner.getTask().setLastError("Must have a default tour header selected in the Booking Control file");
/** * Create the product record. * Override in the concrete classes. */ public Product getProductRecord() { return new TourHeader(this); }