/** * Override this to open the main file. * <p />You should pass this record owner to the new main file (ie., new MyNewTable(thisRecordOwner)). * @return The new record. */ public Record openMainRecord() { return new Booking(this); // Since Tour is the header } /**
if (recBooking.getEditMode() == DBConstants.EDIT_CURRENT) if ((recBooking.getOpenMode() | DBConstants.LOCK_STRATEGY_MASK) == 0) recBooking.setOpenMode(recBooking.getOpenMode() | DBConstants.OPEN_LOCK_ON_EDIT_STRATEGY); // Error if already locked try { if (recBooking.edit() != DBConstants.NORMAL_RETURN) return DBConstants.NORMAL_RETURN; // Nor problem - already locked } catch (DBException ex) { if (recBooking.getListener(UpdateOnCloseHandler.class) == null) recBooking.addListener(new UpdateOnCloseHandler(null)); // Make sure this is updated BaseField actionType = recBooking.getField(Booking.TOUR_EVENT_ID); actionType.setValue(TourEvent.NO_EVENT); recBooking.getField(Booking.NEXT_EVENT_DATE).setToLimit(DBConstants.END_SELECT_KEY); BaseField actionDate = recBooking.getField(Booking.NEXT_EVENT_DATE); if (recBooking.getField(Booking.BOOKED).getState() == false) if (recBooking.getField(Booking.BOOKING_DATE).compareTo(actionDate) <= 0) actionDate.moveFieldToThis(recBooking.getField(Booking.BOOKING_DATE)); actionType.setValue(TourEvent.BOOKING); if (recBooking.getField(Booking.DEPOSIT_DUE).getState() == false) if (recBooking.getField(Booking.DEPOSIT_DUE_DATE).compareTo(actionDate) <= 0) actionDate.moveFieldToThis(recBooking.getField(Booking.DEPOSIT_DUE_DATE)); actionType.setValue(TourEvent.DEPOSIT_DUE);
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, PROFILE_ID_KEY); keyArea.addKeyField(PROFILE_ID, DBConstants.ASCENDING); keyArea.addKeyField(BOOKING_DATE, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, TOUR_ID_KEY); keyArea.addKeyField(TOUR_ID, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, NEXT_EVENT_DATE_KEY); keyArea.addKeyField(NEXT_EVENT_DATE, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, BOOKING_DATE_KEY); keyArea.addKeyField(BOOKING_DATE, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, MOD_DATE_KEY); keyArea.addKeyField(MOD_DATE, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, GENERIC_NAME_KEY); keyArea.addKeyField(GENERIC_NAME, DBConstants.ASCENDING); keyArea = this.makeIndex(DBConstants.NOT_UNIQUE, DESCRIPTION_KEY); keyArea.addKeyField(DESCRIPTION, DBConstants.ASCENDING);
/** * How many of this type of passenger (ie., single, double, etc.) are in this type of room?. */ public int getPaxInRoom(int iRoomType) { if (this.getField(BookingDetail.BOOKING_PAX_ID).getValue() != 0) return 1; // Pax mod **FIX THIS** else { Booking booking = (Booking)this.getBooking(true); if ((iRoomType >= PaxCategory.SINGLE_ID) && (iRoomType <= PaxCategory.CHILD_ID)) { int iFieldSeq = booking.getFieldSeq(Booking.SINGLE_PAX) + iRoomType - PaxCategory.SINGLE_ID; return (int)booking.getField(iFieldSeq).getValue(); } else return booking.getCountPax(); } } /**
if (!this.getCounterField().isNull()) if (this.getField(Booking.PAX).getValue() > 0) BookingPax recBookingPax = new BookingPax(this.findRecordOwner()); try { recBookingPax.addListener(new SubFileFilter(this)); else if (!this.getField(Booking.GENERIC_NAME).isNull()) strDesc = this.getField(Booking.GENERIC_NAME).toString(); else strDesc = this.getField(Booking.CONTACT).toString(); String strDate = fldDepDate.toString(); int iLen = strDesc.length() + strTourDesc.length() + 3 + strDate.length(); if (iLen > this.getField(Booking.DESCRIPTION).getMaxLength()) strTourDesc = strTourDesc.substring(0, strTourDesc.length() - Math.max(0, Math.max(0, iLen - this.getField(Booking.DESCRIPTION).getMaxLength()))); if (strTourDesc.length() > 0) strDesc += strTourDesc + " - "; strDesc += strDate; int iOldOpenMode = this.getOpenMode(); this.setOpenMode(iOldOpenMode & ~DBConstants.OPEN_REFRESH_AND_LOCK_ON_CHANGE_STRATEGY); boolean[] rgbEnabled = this.getField(Booking.DESCRIPTION).setEnableListeners(false); this.getField(Booking.DESCRIPTION).setString(strDesc); this.getField(Booking.DESCRIPTION).setEnableListeners(rgbEnabled); this.setOpenMode(iOldOpenMode); return strDesc;
BaseListener nextListener = recBooking.getListener(FileRemoveBOnCloseHandler.class.getName()); while (nextListener != null) RecordOwner recordOwner = recBooking.getRecordOwner(); Tour recTour = (Tour)((ReferenceField)recBooking.getField(Booking.TOUR_ID)).getReference(); TourHeader recTourHeader = (TourHeader)((ReferenceField)recTour.getField(Tour.TOUR_HEADER_ID)).getReference(); if (recBooking.getField(Booking.TOUR_ID).isNull()) if (!recBooking.getField(Booking.TOUR_ID).isNull()) return DBConstants.NORMAL_RETURN; // A tour is already set up for this booking if (recBooking.getField(Booking.TOUR_ID).isNull()) iErrorCode = recTour.setupTourFromHeader(recTourHeader, fldDepDate, DBConstants.BLANK, DBConstants.BLANK); if (iErrorCode != DBConstants.NORMAL_RETURN) if ((recBooking.getEditMode() == DBConstants.EDIT_ADD) || (recBooking.getEditMode() == DBConstants.EDIT_NONE)) boolean[] rgbEnabled = recBooking.setEnableListeners(false); Object[] rgobjEnabled = recBooking.setEnableFieldListeners(false); recBooking.addNew(); recBooking.setEnableListeners(rgbEnabled); recBooking.setEnableFieldListeners(rgobjEnabled); recBooking.edit(); recBooking.calcBookingDates(recTour, recTourHeader); recBooking.getField(Booking.TOUR_ID).moveFieldToThis(recTour.getField(Tour.ID)); recBooking.setupDefaultDesc(recTourHeader, fldDepDate); recBooking.getField(Booking.CODE).handleFieldChanged(DBConstants.DISPLAY, DBConstants.SCREEN_MOVE);
/** * Get number of pax. */ public int getCountPax() { return (int)this.getField(Booking.PAX).getValue(); } /**
FreeOnFreeHandler listener = (FreeOnFreeHandler)this.getListener(FreeOnFreeHandler.class); if (recBookingLine == null) recBookingLine = new BookingLine(this.findRecordOwner()); this.addListener(new FreeOnFreeHandler(recBookingLine)); ((BookingLine)recBookingLine).addDetailBehaviors(this, (Tour)((ReferenceField)this.getField(Booking.TOUR_ID)).getReferenceRecord()); RecountOnValidHandler recountOnValidHandler = (RecountOnValidHandler)((Record)recBookingLine).getListener(RecountOnValidHandler.class); if (recountOnValidHandler == null) int iCurrentEditMode = this.setEditMode(DBConstants.EDIT_NONE); // This keeps a recount from happening on addListener. this.addListener(recountOnValidHandler = new RecountOnValidHandler((Record)recBookingLine, true)); this.setEditMode(iCurrentEditMode); if (!this.getCounterField().isNull()) recountOnValidHandler.recountRecords(); listener = (FreeOnFreeHandler)this.getListener(FreeOnFreeHandler.class); if (recArTrx == null) recArTrx = new ArTrx(this.findRecordOwner()); this.addListener(new FreeOnFreeHandler(recArTrx)); int iCurrentEditMode = this.setEditMode(DBConstants.EDIT_NONE); // This keeps a recount from happening on addListener. this.addListener(recountOnValidHandler = new RecountOnValidHandler((Record)recArTrx, true)); this.setEditMode(iCurrentEditMode); if (!this.getCounterField().isNull()) recountOnValidHandler.recountRecords(); return recArTrx;
recBookingControl = new BookingControl(this.findRecordOwner()); this.addListener(new FreeOnFreeHandler(recBookingControl)); recProfileControl = new ProfileControl(this.findRecordOwner()); this.addListener(new FreeOnFreeHandler(recProfileControl)); this.getField(Booking.BOOKING_STATUS_ID).addListener(new InitFieldHandler(recBookingControl.getField(BookingControl.BOOKING_STATUS_ID))); this.getField(Booking.MARKUP).addListener(new InitFieldHandler(recBookingControl.getField(BookingControl.MARKUP))); this.getField(Booking.TOUR_PRICING_TYPE_ID).addListener(new InitFieldHandler(recBookingControl.getField(BookingControl.TOUR_PRICING_TYPE_ID))); this.getField(Booking.NON_TOUR_PRICING_TYPE_ID).addListener(new InitFieldHandler(recBookingControl.getField(BookingControl.NON_TOUR_PRICING_TYPE_ID))); this.getField(Booking.STD_COMMISSION).addListener(new InitFieldHandler(recBookingControl.getField(BookingControl.AGENCY_COMM))); this.getField(Booking.LANGUAGE_ID).addListener(new InitFieldHandler(recProfileControl.getField(ProfileControl.LANGUAGE_ID))); this.getField(Booking.CURRENCYS_ID).addListener(new InitFieldHandler(recProfileControl.getField(ProfileControl.CURRENCYS_ID))); this.getField(Booking.PAX).addListener(new InitFieldHandler((BaseField)recBookingControl.getField(BookingControl.PAX), true, true)); this.getField(Booking.SINGLE_PAX).addListener(new InitFieldHandler((BaseField)recBookingControl.getField(BookingControl.SINGLE_PAX), true, true)); this.getField(Booking.DOUBLE_PAX).addListener(new InitFieldHandler((BaseField)recBookingControl.getField(BookingControl.DOUBLE_PAX), true, true)); this.addListener(new MoveIDToCodeHandler(Booking.CODE)); // If auto-booking numbers are turned on, set them return recBookingControl;
Booking recBooking = (Booking)this.getBooking(true); if ((recBooking == null) || (recBooking.getEditMode() == DBConstants.EDIT_NONE)) return DBConstants.ERROR_RETURN; Tour recTour = (Tour)((ReferenceField)recBooking.getField(Booking.TOUR_ID)).getReference(); if ((recTour == null) || (recTour.getEditMode() == DBConstants.EDIT_NONE)) try { recTour.writeAndRefresh(); recBooking.writeAndRefresh(); } catch (DBException ex) { ex.printStackTrace(); iErrorCode = recBooking.deleteTourDetail(recTour, recBookingPax, this.getField(BookingTour.PRODUCT_ID), dateStart); iErrorCode = recBooking.addTourDetail(recTour, recTourHeader, recBookingPax, recBookingAnswer, dateStart, this.getField(BookingTour.ASK_FOR_ANSWER)); iErrorCode = recBooking.changeTourDetail(recTour, recBookingPax, recTourHeader, dateOriginal, dateStart);
if (this.getRecord(Booking.BOOKING_FILE) == null) Booking recBooking = new Booking(this); BookingLine recBookingLine = new BookingLine(this); recBooking.addListener(new SubFileFilter(recProfile)); recBooking.addListener(new RecountOnValidHandler(recBookingLine)); recBookingLine.addDetailBehaviors(recBooking, null); recBooking.addListener(new SubCountHandler(this.getScreenRecord().getField(ProfileAnalysisScreenRecord.GROSS_SALES), Booking.GROSS, true, true));
recTour.setupRecordListener(this, false, false); // I need to listen for record changes TourHeader recTourHdr = (TourHeader)this.getRecord(TourHeader.TOUR_HEADER_FILE); ReferenceField fldTourID = (ReferenceField)recBooking.getField(Booking.TOUR_ID); BookingControl recBookingControl = (BookingControl)this.getRecord(BookingControl.BOOKING_CONTROL_FILE); ProfileControl recProfileControl = (ProfileControl)this.getRecord(ProfileControl.PROFILE_CONTROL_FILE); recBooking.setOpenMode(recBooking.getOpenMode() | DBConstants.OPEN_REFRESH_AND_LOCK_ON_CHANGE_STRATEGY); fldTourID.addListener(new ReadSecondaryHandler(recTour, Tour.ID_KEY, DBConstants.DONT_CLOSE_ON_FREE, true, true)); // Update record MoveOnValidHandler tourChangeHandler = (MoveOnValidHandler)recTour.getListener(MoveOnValidHandler.class); recBooking.addControlDefaults(recBookingControl, recProfileControl);
FieldListener behCheckRange = new CheckRangeHandler(-5, 5); screenRecord.getField(LookupScreenRecord.QUERY_KEY).addListener(behCheckRange); recBooking.addListener(new FileRemoveBOnCloseHandler(behCheckRange)); KeyArea tempKey = recBooking.makeIndex(DBConstants.NOT_UNIQUE, null); // Add temp key screenRecord.getField(LookupScreenRecord.QUERY_KEY).addListener(behQueryKeyHandler); this.getMainRecord().addListener(new CompareFileFilter(recBooking.getField(Booking.EMPLOYEE_ID), screenRecord.getField(LookupScreenRecord.CURRENT_AGENT), "=", null, true)); screenRecord.getField(LookupScreenRecord.CURRENT_AGENT).addListener(new FieldReSelectHandler(this)); this.getMainRecord().addListener(new CompareFileFilter(recBooking.getField(Booking.BOOKING_DATE), screenRecord.getField(LookupScreenRecord.START_BK_DATE), ">=", null, true)); screenRecord.getField(LookupScreenRecord.START_BK_DATE).addListener(new FieldReSelectHandler(this)); this.getMainRecord().addListener(new CompareFileFilter(recTour.getField(Tour.DEPARTURE_DATE), screenRecord.getField(LookupScreenRecord.TOUR_HDR_START_DATE), ">=", null, true)); FieldListener behInitOnChange = new InitOnChangeHandler(screenRecord.getField(LookupScreenRecord.START_TARGET_FIELD)); screenRecord.getField(LookupScreenRecord.QUERY_KEY).addListener(behInitOnChange); recBooking.addListener(new FileRemoveBOnCloseHandler(behInitOnChange));
/** * FieldChanged Method. */ public int fieldChanged(boolean bDisplayOption, int iMoveMode) { Booking recBooking = (Booking)this.getOwner().getRecord(); Tour recTour = null; if (!recBooking.getField(Booking.TOUR_ID).isNull()) recTour = (Tour)((ReferenceField)recBooking.getField(Booking.TOUR_ID)).getReference(); if (recTour != null) if ((recTour.getEditMode() == DBConstants.EDIT_CURRENT) || (recTour.getEditMode() == DBConstants.EDIT_IN_PROGRESS)) { Record recTourHeader = ((ReferenceField)recTour.getField(Tour.TOUR_HEADER_ID)).getReference(); if (recTourHeader != null) if (recTourHeader.getField(TourHeader.TOUR_SERIES).getState() == false) { if (recBooking.getListener(WriteOnUpdateHandler.class) == null) recBooking.addListener(new WriteOnUpdateHandler(recTour, false)); boolean[] rgbEnabled = recTour.getField(m_iTourFieldSeq).setEnableListeners(false); recTour.getField(m_iTourFieldSeq).moveFieldToThis(this.getOwner()); recTour.getField(m_iTourFieldSeq).setEnableListeners(rgbEnabled); } } return super.fieldChanged(bDisplayOption, iMoveMode); }
this.addListener(new BookingSoftDeleteHandler(this.getField(Booking.DELETED))); // @pend(don) Add this +++ this.getField(Booking.DELETED))); this.addListener(new DateChangedHandler(Booking.MOD_DATE)); this.addListener(new SetUserIDHandler(Booking.EMPLOYEE_ID, true)); this.addListener(new SetUserIDHandler(Booking.EMPLOYEE_MOD_ID, false)); this.addListener(new UpdateArTrxHandler(null)); this.addListener(new NewBookingHandler(null)); this.getField(Booking.PAX).addListener(new CalcDepositHandler(null)); this.getField(Booking.TOUR_ID).addListener(new CalcDepositHandler(null)); this.getField(Booking.BOOKING_STATUS_ID).addListener(new BookingStatusEventHandler(TourEvent.BOOKING_STATUS)); this.getField(Booking.BOOKED).addListener(new TourEventHandler(TourEvent.BOOKING)); this.getField(Booking.DEPOSIT_RECEIVED).addListener(new TourEventHandler(TourEvent.DEPOSIT_RECEIVED)); this.getField(Booking.FINAL_PAYMENT_RECEIVED).addListener(new TourEventHandler(TourEvent.FINAL_PAYMENT_RECEIVED)); this.getField(Booking.DEPOSIT_DUE).addListener(new TourEventHandler(TourEvent.DEPOSIT_DUE)); this.getField(Booking.FINAL_PAYMENT_DUE).addListener(new TourEventHandler(TourEvent.FINAL_PAY_DUE)); this.getField(Booking.CANCELLED).addListener(new TourEventHandler(TourEvent.CANCELLATION)); this.getField(Booking.CANCELLED).addListener(new BookingCancelledEventHandler(null)); this.getField(Booking.BALANCE).addListener(new BookingPaymentEventHandler(null)); this.getField(Booking.BOOKED).addListener(new CalcBookingActionDateHandler(null)); this.getField(Booking.BOOKING_DATE).addListener(new CalcBookingActionDateHandler(null)); this.getField(Booking.DEPOSIT_DUE).addListener(new CalcBookingActionDateHandler(null));
/** * Add all the screen listeners. */ public void addListeners() { super.addListeners(); BookingLine recBookingLine = (BookingLine)this.getRecord(BookingLine.BOOKING_LINE_FILE); Booking recBooking = (Booking)this.getRecord(Booking.BOOKING_FILE); recBooking.addArDetail(null, recBookingLine, false); recBookingLine.getField(BookingLine.PRICE).addListener(new CopyDataHandler(recBookingLine.getField(BookingLine.PRICING_STATUS_ID), new Integer(PricingStatus.MANUAL), null)); recBookingLine.addListener(new BookingLineStatusHandler(null)); } /**
|| (recPricingType.getEditMode() == DBConstants.EDIT_NONE) || (recPricingType.getEditMode() == DBConstants.EDIT_ADD)) PricingType recPricingType2 = new PricingType(recBooking.findRecordOwner()); PricingType recPricingType3 = recPricingType2.getPricingType(PricingType.COMPONENT_COST_PRICING); if (recPricingType3 != null) fldTourModuleID = this.getOwner().getRecord().getField(BookingDetail.PRODUCT_ID); dateStart = ((DateTimeField)this.getOwner().getRecord().getField(BookingDetail.DETAIL_DATE)).getDateTime(); recBooking.getTourPricingType(null, fldTourModuleID, dateStart); // This will clear the cache if (!recBooking.getField(Booking.TOUR_ID).isNull()) Tour recTour = (Tour)((ReferenceField)recBooking.getField(Booking.TOUR_ID)).getReference(); BookingLine recBookingLine = new BookingLine(recBooking.findRecordOwner()); recBookingLine.addDetailBehaviors(recBooking, recTour); int iErrorCode = recBooking.addBookingDetailPricing(recTour, recBookingLine, fldTourModuleID, dateStart, false);
recBookingDetails = new BookingDetail(this.findRecordOwner()); recBookingDetails.addDetailBehaviors(this, recTour); int iTourPricingType = this.getTourPricingType(recTour, fldDetailModuleID, dateDetailStart); if (this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class) != null) bPricingListenerState = this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class).setEnabledListener(false); if (bRecost) if (this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class) != null) this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class).setEnabledListener(bPricingListenerState); continue; // I'm going to add the price for this in the next step if (this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class) != null) this.getField(Booking.TOUR_PRICING_TYPE_ID).getListener(ChangePricingTypeHandler.class).setEnabledListener(bPricingListenerState); int iTourPricingType = this.getTourPricingType(recTour, fldTourModuleID, dateStart); if (iTourPricingType == PricingType.OPTION_PRICING) recBookingAnswer = new BookingAnswer(this.findRecordOwner()); TourHeader recTourHeader = (TourHeader)((ReferenceField)recTour.getField(Tour.TOUR_HEADER_ID)).getReference(); BookingPax recBookingPax = new BookingPax(this.findRecordOwner()); recBookingPax.getField(BookingPax.ID).setValue(0); recTourHeaderPricing = new TourHeaderLine(this.findRecordOwner()); Date dateDeparture = ((DateField)recTour.getField(Tour.DEPARTURE_DATE)).getDateTime(); recBookingAnswer.addDetailBehaviors(this, recTour); if (this.getTourPricingType(recTour, fldDetailModuleID, dateDetailStart) == PricingType.OPTION_PRICING) bSetupDetail = true;
if (recBooking.getEditMode() != DBConstants.EDIT_NONE) if (recBooking.getField(Booking.PROFILE_ID).isNull()) recBooking.addSecondProfile(recProfile); // Agency Secondary logic recProfile.setHandle(bookmarkMain, DBConstants.BOOKMARK_HANDLE); } catch (DBException ex) {
ArTrx recArTrx = (ArTrx)recBooking.addArDetail(null, null, true); if (recBooking.getField(Booking.BALANCE).getValue() != recBooking.getField(Booking.NET).getValue()) Tour recTour = (Tour)((ReferenceField)recBooking.getField(Booking.TOUR_ID)).getReference(); if (recTour != null) if ((recTour.getEditMode() == DBConstants.EDIT_CURRENT) || (recTour.getEditMode() == DBConstants.EDIT_IN_PROGRESS)) double dAmountPaid = recBooking.getField(Booking.NET).getValue() - recBooking.getField(Booking.BALANCE).getValue(); dCancellationCharge = Math.min(dCancellationCharge, dAmountPaid); try { recArTrx.getField(ArTrx.AMOUNT).setValue(-recBooking.getField(Booking.NET).getValue()); ((DateTimeField)recArTrx.getField(ArTrx.TRX_DATE)).setValue(dDate); recArTrx.getField(ArTrx.TRX_STATUS_ID).setValue(iInvoiceModification);