Пример #1
0
def dialinfo(action,var) :
  cutil.printVar("customer stat",action,var)
  
  if action == "before" :
      custid = var["JUPDIALOG_START"]
      custR = util.CUSTOMERLIST(var).findElem(custid)
      cust.customerToVar(var,custR,CUST)
      cust.setCustVarCopy(var,CUST)
      l = util.RESOP(var).getReseForCustomer(custid)
      l1 = util.RESOP(var).getReseForGuest(custid)
      l2 = util.RESOP(var).getReseForPayer(custid)      
      _createListOfRes(var,l,CLIST)
      _createListOfRes(var,l1,GLIST)
      _createListOfRes(var,l2,PLIST)
      l3 = _createListOfMail(var)

      m = {"nofcustomer" : len(l), "nofguest" : len(l1), "nofpayer" : len(l2), "nomails" : len(l3) }
      s = util.transformXMLFromMap("custinfo.xslt",m)
      var["i_custinfo"] = s      
#      var["i_custinfo"] = M("custinfo").format(len(l),len(l1),len(l2))
      cutil.setCopy(var,"i_custinfo")

      
  if action == "shownote" :
     diallaunch.showmailnote(var,var["mailname"])      
Пример #2
0
def dialogaction(action, var):

    cutil.printVar("modif rese", action, var)

    if action == "before":
        (rename, resroom, resday) = rparam.XMLtoroomday(var["JUPDIALOG_START"])
        cutil.setCopy(var, "resename")
        rutil.setReseName(var, rename)
        rparam.setStartParam(var)

    if action == "modifrese" or action == "modifstay":
        xml = rparam.getStartParam(var)
        (resname, resroom, resday) = rparam.XMLtoroomday(xml)
        if action == "modifrese":
            diallaunch.modifreservationroom(var, resroom, resday)
        else:
            diallaunch.staydetails(var, resroom, resday)

    if action == "aftercheckin": rutil.afterCheckIn(var)

    if action == "staybalance":
        diallaunch.staycalculation(var, rutil.getReseName(var))

    if action == "disclosurechange" and var["disclosureopen"] and var[
            "disclosureid"] == "adddvancepayment":
        A = Ad(var)
        A.setValReseName(rutil.getReseName(var))

    if action == "disclosurechange" and var["disclosureopen"] and var[
            "disclosureid"] == "confirmnotconfirmed":
        confirm.createC(var, P).setResNameToVar(rutil.getReseName(var))

    if action == "signalchange" and var[
            "changefield"] == "p_advance_percent" and var["changeafterfocus"]:
        A = Ad(var)
        A.calculateAdvanceAmount()

    if action == "saveconfirm" and var["JYESANSWER"]:
        confirm.createC(var, P).changeReservation(rutil.getReseName(var))
        rutil.refreshPanel(var)

    if action == "saveadva":
        A = Ad(var)
        if not A.validate(): return
        var["JYESNO_MESSAGE"] = "@saveadva"
        var["JAFTERDIALOG_ACTION"] = "saveadvaafterquestion"

    if action == "saveadvaafterquestion" and var["JYESANSWER"]:
        A = Ad(var)
        A.modifyAdvaData()
        rutil.refreshPanel(var)

    if action == "sendmail":
        rese = rutil.getReseName(var)
        diallaunch.confirmationmail(var, rese)

    if action == "cancelres" and var["JYESANSWER"]:
        util.RESOP(var).changeStatusToCancel(rutil.getReseName(var))
        var["JCLOSE_DIALOG"] = True
        rutil.refreshPanel(var)
Пример #3
0
def _addPayment(var):
    ROP = util.RESOP(var)
    r = util.newResAddPayment()
    quantity = var["quantity"]
    da = con.toDate(var["paymentdate"])
    descr = var["descr"]
    price = con.toB(var["price"])
    #     price = toB(1.00)
    pricelist = con.toB(var["pricefromlist"])
    total = con.toB(var["total"])
    #     total = toB(1.01)
    room = None
    guest = None
    rese = var["resename"]
    vat = var["vat"]
    serv = var["service"]
    if var[RLIST + "_lineset"]:
        room = var["roomid"]
        guest = var["guest_name"]
    if room == None:
        room = var["JDATELINE_LINE"]
    if guest == None:
        guest = util.RESFORM(var).findElem(rese).getCustomerName()
    r.setQuantity(quantity)
    r.setPrice(price)
    r.setPriceList(pricelist)
    r.setPriceTotal(total)
    r.setServDate(da)
    r.setDescription(descr)
    r.setService(serv)
    r.setGuestName(guest)
    r.setRoomName(room)
    if serv == None:
        r.setVat(vat)
    ROP.addResAddPayment(rese, r)
Пример #4
0
   def run(self,var) :
     # double check (under semaphore) that reservation is not already changed to STAY
     resName = var["resename"]
     R = util.RESFORM(var)
     ROP = util.RESOP(var)
     CUST = util.CUSTOMERLIST(var)
     r = R.findElem(resName)
     if not var["isstay"] and util.resStatus(r) == 1 :
       var["JERROR_MESSAGE"] = M("ALREADYCHECKEDINMESS")
       var["JMESSAGE_TITLE"] = M("ALREADYCHECKEDINTITLE")
       return
     a = cutil.createArrayList()
     for custo in var["JLIST_MAP"][CHECKINLIST] :
           if cutil.allEmpty(custo,cust.getCustFieldIdWithout()) : continue
           cid = custo["name"]
           if cid == None : c = cust.newCustomer(var)
           else : c = CUST.findElem(cid)
           cust.customerDataFromVar(c,custo)
           if cid == None : cid = CUST.addElem(c).getName()
           else : CUST.changeElem(c)
           cust.saveDefaCustomer(custo)
           rGuest = util.newResGuest(var)
           rGuest.setGuestName(cid)
           rid = custo["roomid"]
           rGuest.setRoomName(rid)
           a.add(rGuest)
     ROP.setResGuestList(resName,a)
     if var["isstay"] : cutil.JOURNAL(var).addJournalElem(util.JOURNAL_CHANGELISTOFGUEST,None,resName)

     var["JCLOSE_DIALOG"] = True   
Пример #5
0
def elemcustomeraction(action, var):
    cutil.printVar("elemcustomeraction", action, var)
    R = util.CUSTOMERLIST(var)

    if action == "before" and var["JCRUD_DIALOG"] == "crud_add":
        cust.setDefaCustomer(var)

    if action == "crud_add" and not var["JCRUD_AFTERCONF"]:
        if _duplicatedCustomerName(var): return
        var["JYESNO_MESSAGE"] = M("ADDNEWCUSTOMERASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_add" and var["JCRUD_AFTERCONF"]:
        R.addElem(cust.customerFromVar(var))
        cust.saveDefaCustomer(var)
        var["JCLOSE_DIALOG"] = True
        return

    if action == "crud_change" and not var["JCRUD_AFTERCONF"]:
        var["JYESNO_MESSAGE"] = M("CHANGECUSTOMERASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_change" and var["JCRUD_AFTERCONF"]:
        R.changeElem(cust.customerFromVar(var))
        cust.saveDefaCustomer(var)
        var["JCLOSE_DIALOG"] = True

    if action == "crud_remove" and not var["JCRUD_AFTERCONF"]:
        l = util.RESOP(var).getReseForCustomer(var["name"])
        l1 = util.RESOP(var).getReseForGuest(var["name"])
        l2 = util.RESOP(var).getReseForPayer(var["name"])
        if len(l) > 0 or len(l1) > 0 or len(l2) > 0:
            var["JERROR_MESSAGE"] = M("cannotremovecustomer").format(
                len(l), len(l1), len(l2))
            return
        var["JYESNO_MESSAGE"] = M("REMOVECUSTOMERASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_remove" and var["JCRUD_AFTERCONF"]:
        R.deleteElem(cust.customerFromVar(var))
        var["JCLOSE_DIALOG"] = True
Пример #6
0
def _createResData(var,new):
  service = var["roomservice"]
  if cutil.emptyS(service) : return None
  pricelist = var["roompricelist"]
  if cutil.emptyS(pricelist) : return None
  roomname = var["name"]
  date = var["datecol"]
  resdays = var["resdays"]
  dl = datetime.timedelta(1)
  dt = date
  sum = util.SUMBDECIMAL()
  if new :
    list = []
  else :
    list = var["JLIST_MAP"][RESLIST]
    sum.add(var["JFOOTER_reslist_rlist_pricetotal"])
  resnop = var["resnop"]
  perperson = var["serviceperperson"]
  priceroom = var["respriceperroom"]
  priceperson = var["respriceperson"]
  pricechildren = None
  priceextra = None
  resnoc = var["resnochildren"]
  if resnoc : pricechildren = var["respricechildren"]
  resextra = var["resnoextrabeds"]
  if resextra : priceextra = var["respriceextrabeds"]
    
  price = rutil.calculatePrice(perperson,resnop,resnoc,resextra,priceperson,pricechildren,priceextra,priceroom)
  
  query = cutil.createArrayList()
  RES = util.RESOP(var)
  qelem = rutil.createResQueryElem(roomname,date,con.incDays(date,resdays))
  query.add(qelem)
  rList = RES.queryReservation(query)
  allavail = True
  
  resename = rutil.getReseName(var)

  for i in range(resdays) :
#      price = pPrice.getPrice()
      avail = True
      for re in rList :
          rdata = re.getResDate()
          if con.eqDate(dt,rdata) : 
            if resename == None or resename != re.getResId() : 
              avail = allavail = False
      
      map = { "avail" : avail, "resroomname" : roomname, "resday" : dt, "rlist_pricetotal" : price, "rline_nop" : resnop,"rlist_priceperson" : priceperson,
              "rlist_noc" : resnoc, "rlist_pricechildren" : pricechildren, "rlist_noe" : resextra, "rlist_priceextra" : priceextra,              
              "rlist_serviceperperson" : perperson, "rlist_roomservice" : service, "rlist_roompricelist" : pricelist}
      list.append(map)
      dt = dt + dl
      sum.add(price)
    
  return [list,sum.sum,allavail]    
Пример #7
0
 def __init__(self, var, rese):
     """Constructor : create a list of services already billed
     Args:
         var :
         rese : reservation name          
     """
     bli = util.RESOP(var).findBillsForReservation(rese)
     self._se = Set()
     for b in bli:
         for l in b.getPayList():
             self._se.add(con.toL(l))
Пример #8
0
def elemroomaction(action,var) :
    
  cutil.printVar("elemroomaction",action, var)  
  R = util.ROOMLIST(var)

  if action == "columnchangeaction" :
    if not var["check"] : return
    serv = util.SERVICES(var).findElem(var["service"])
    assert serv != None
    _setNumb(var,serv)
    cutil.setCopy(var,["noperson","nochildren","noextrabeds"])    

  if action == "before" :
      _createServicesList(var)
      if var["JCRUD_DIALOG"] == "crud_add" or var["JCRUD_DIALOG"] == "crud_change" : cutil.setChangeEditMode(var,SERVLIST,"check")
    
  if action == "crud_add"  and not var["JCRUD_AFTERCONF"] :
      if _duplicatedRoomName(var) or _notValidRoomDesc(var): return
      var["JYESNO_MESSAGE"] = M("ADDNEWROOMASK")
      var["JMESSAGE_TITLE"] = ""  
      return
      
  if action == "crud_add"  and var["JCRUD_AFTERCONF"] :
      a = _getServiceList(var)
      R.addElem(_createRoom(var,a))
      R.setRoomServices(var["name"],a)
      var["JCLOSE_DIALOG"] = True
      return

  if action == "crud_change"  and not var["JCRUD_AFTERCONF"] :
      if _notValidRoomDesc(var): return
      var["JYESNO_MESSAGE"] = M("CHANGEROOMASK")
      var["JMESSAGE_TITLE"] = ""  
      return

  if action == "crud_change"  and var["JCRUD_AFTERCONF"] :
      a = _getServiceList(var)
      R.changeElem(_createRoom(var,a))
      R.setRoomServices(var["name"],a)
      var["JCLOSE_DIALOG"] = True

  if action == "crud_remove"  and not var["JCRUD_AFTERCONF"] :    
      l = util.RESOP(var).getReseForRoom(var["name"])
      if len(l) > 0 :
         var["JERROR_MESSAGE"] = M("cannotremoveroom").format(len(l))
         return
      var["JYESNO_MESSAGE"] = M("REMOVEROOMASK")
      var["JMESSAGE_TITLE"] = ""  
      return
  
  if action == "crud_remove"  and var["JCRUD_AFTERCONF"] :
      R.deleteElem(_createRoom(var))
      var["JCLOSE_DIALOG"] = True 
Пример #9
0
def elempricelistaction(action, var):

    cutil.printVar("elem price action", action, var)
    P = util.PRICELIST(var)

    if action == "before":
        _createPriceElemList(var)
        if var["JCRUD_DIALOG"] == "crud_remove":
            var["JSETATTR_CHECKLIST_prices_readonly"] = True
            var["JVALATTR_CHECKLIST_prices_readonly"] = ""
            return

    if action == "crud_add" and not var["JCRUD_AFTERCONF"]:
        if _duplicatedPriceList(var): return
        if _notValidPriceElemList(var): return
        var["JYESNO_MESSAGE"] = M("ADDNEWPRICELIST")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_add" and var["JCRUD_AFTERCONF"]:
        pr = _createPriceList(var)
        P.addElem(pr)
        _savePriceElemList(var)
        var["JCLOSE_DIALOG"] = True
        return

    if action == "crud_change" and not var["JCRUD_AFTERCONF"]:
        if _notValidPriceElemList(var): return
        var["JYESNO_MESSAGE"] = M("MODIFYPRICELIST")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_change" and var["JCRUD_AFTERCONF"]:
        pr = _createPriceList(var)
        P.changeElem(pr)
        _savePriceElemList(var)
        var["JCLOSE_DIALOG"] = True

    if action == "crud_remove" and not var["JCRUD_AFTERCONF"]:
        #    getReseForPriceList
        l = util.RESOP(var).getReseForPriceList(var["name"])
        if len(l) > 0:
            var["JERROR_MESSAGE"] = M("cannotremovepricelist").format(len(l))
            return
        var["JYESNO_MESSAGE"] = M("REMOVEPRICELIST")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_remove" and var["JCRUD_AFTERCONF"]:
        pr = _createPriceList(var)
        P.deleteElem(pr)
        var["JCLOSE_DIALOG"] = True
Пример #10
0
def _createX(var, rese_name, paymentmethod=None):
    print rese_name
    cu = cust.newCustomer(var)
    #    cu.setGensymbol(True);
    cu = util.CUSTOMERLIST(var).addElem(cu)
    cust_name = cu.getName()
    print cust_name
    bli = util.RESOP(var).findBillsForReservation(rese_name)
    print bli
    for l in bli:
        print l
    assert len(bli) == 0

    R = util.RESFORM(var).findElem(rese_name)

    li = []
    for l in R.getResDetail():
        li.append(l.getId())
    print li
    assert len(li) > 0
    xml = rpdf.buildXMLForStay(var, rese_name, cust_name, li)
    print xml
    S = cbill.HOTELBILLSAVE(var, rese_name, cust_name, xml, paymentmethod)
    res = S.doTransRes()
    print res
    if not res: print var["JERROR_MESSAGE"]
    assert res
    bli = util.RESOP(var).findBillsForReservation(rese_name)
    assert len(bli) == 1
    print S.getB().getName()
    print S.getTotal()

    xml = cbill.getXMLForBill(var, S.getB().getName())
    print xml
    assert xml != None
    return (S.getB(), xml)
Пример #11
0
def _createList(var):
    resName = var["resename"]
    ROOM = util.ROOMLIST(var)
    ROP = util.RESOP(var)
    CU = util.CUSTOMERLIST(var)
    list = []
    gList = ROP.getResGuestList(resName)
    for g in gList:
        room = g.getRoomName()
        guest = g.getGuestName()
        rdescr = ROOM.findElem(room).getDescription()
        c = CU.findElem(guest)
        map = {"roomid": room, "roomdesc": rdescr}
        cust.toCustomerVar(map, c, "guest_")
        list.append(map)
    var["JLIST_MAP"] = {RLIST: list}
Пример #12
0
def elemserviceaction(action,var):
    
  cutil.printVar("elem service action",action,var)    
    
  serv = util.SERVICES(var)

  if action == "before" and var["JCRUD_DIALOG"] == "crud_add" :
    var["vat"] = D.getDataH(15)
    cutil.setCopy(var,"vat")
    
  if action == "crud_add"  and not var["JCRUD_AFTERCONF"] :
      if util.duplicateService(var) : return          
      var["JYESNO_MESSAGE"] = M("ADDNEWSERVICEASK");
      var["JMESSAGE_TITLE"] = ""  
      return
      
  if action == "crud_add"  and var["JCRUD_AFTERCONF"] :
      se = _createService(var)
      serv.addElem(se)
      var["JCLOSE_DIALOG"] = True
      return

  if action == "crud_change"  and not var["JCRUD_AFTERCONF"] :
      var["JYESNO_MESSAGE"] = M("CHANGESERVICEASK")
      var["JMESSAGE_TITLE"] = ""  
      return

  if action == "crud_change"  and var["JCRUD_AFTERCONF"] :
      se = _createService(var)
      serv.changeElem(se)
      var["JCLOSE_DIALOG"] = True

  if action == "crud_remove"  and not var["JCRUD_AFTERCONF"] :
      l1 = util.RESOP(var).getReseForService(var["name"])
      l2 = util.listOfPriceListForService(var,var["name"])
      if len(l1) > 0 or len(l2) > 0 :
         var["JERROR_MESSAGE"] = M("cannotremoveotherservice").format(len(l1),len(l2))
         return

      var["JYESNO_MESSAGE"] = M("DELETESERVICEASK")
      var["JMESSAGE_TITLE"] = ""  
      return
  
  if action == "crud_remove"  and var["JCRUD_AFTERCONF"] :
      se = _createService(var)
      serv.deleteElem(se)
      var["JCLOSE_DIALOG"] = True      
Пример #13
0
def _listOfPayments(var):
    rese = rutil.getReseName(var)
    li = util.RESOP(var).getResAddPaymentList(rese)
    seq = []
    sum = util.SUMBDECIMAL()
    CU = util.CUSTOMERLIST(var)
    for e in li:
        g = e.getGuestName()
        customer = CU.findElem(g)
        assert customer != None
        map = {
            "roomid": e.getRoomName(),
            "total": e.getPriceTotal(),
            "price": e.getPrice(),
            "servdescr": e.getDescription(),
            "quantity": e.getQuantity()
        }
        cust.toCustomerVar(map, customer, "guest_")
        seq.append(map)
        sum.add(e.getPriceTotal())
    cutil.setJMapList(var, "paymentlist", seq)
    cutil.setFooter(var, "paymentlist", "total", sum.sum)
Пример #14
0
def _ListOfBills(var):
    rese = rutil.getReseName(var)
    assert rese != None
    bList = util.RESOP(var).findBillsForReservation(rese)
    seq = []
    pli = rutil.getPayments(var)
    sumtotal = 0.0
    footerpayments = 0.0
    sumsell = 0.0
    CU = util.CUSTOMERLIST(var)
    for b in bList:
        C = cbill.BILLCALC(var, b)
        C.calc()
        bName = b.getName()
        assert bName != None
        payer = b.getPayer()
        customer = CU.findElem(payer)
        assert customer != None
        da = b.getIssueDate()
        tot = C.getTotal()
        sell = C.getCharge()
        paysum = C.getPayment()
        sumtotal = cutil.addDecimal(sumtotal, tot)
        footerpayments = cutil.addDecimal(footerpayments, paysum)
        sumsell = cutil.addDecimal(sumsell, sell)
        ma = {
            "billname": bName,
            "billtotal": tot,
            "payments": paysum,
            "sell": sell
        }
        cust.toCustomerVar(ma, customer, "payer_")
        seq.append(ma)
    cutil.setJMapList(var, BILLIST, seq)
    cutil.setFooter(var, BILLIST, "billtotal", sumtotal)
    cutil.setFooter(var, BILLIST, "payments", footerpayments)
    cutil.setFooter(var, BILLIST, "sell", sumsell)
Пример #15
0
def reservationaction(action, var):
    cutil.printVar("reservation", action, var)

    if action == "before":
        list = _getList(var)
        var["JDATELINE_MAP"] = {"reservation": {"linedef": list}}

    if action == "datelineaction":
        (room, day) = rutil.getRoomDateFromVar(var)
        R = util.RESOP(var)
        RO = util.ROOMLIST(var)
        RFORM = util.RESFORM(var)
        services = RO.getRoomServices(room)
        if len(services) == 0:
            var['JERROR_MESSAGE'] = "@noserviceassigned"
            var['JMESSAGE_TITLE'] = "@incompleteconfiguration"
            return
        li = util.getServicesForRoom(var, room)
        if li == None:
            var['JERROR_MESSAGE'] = "@nopricelistforthisservice"
            var['JMESSAGE_TITLE'] = "@incompleteconfiguration"
            return

        res = rutil.getReservForDay(var, room, day)

        if res.isEmpty():
            diallaunch.newreservation(var, room, day, 1, 1)
        else:
            ares = res.get(0)
            resid = ares.getResId()
            (room, day) = rutil.getRoomDateFromVar(var)
            diallaunch.reservationdialogaction(var, resid, room, day)

    if action == "datelinevalues":
        seq = var["JDATELINE_QUERYLIST"]
        vals = []
        query = cutil.createArrayList()
        R = util.RESOP(var)
        RFORM = util.RESFORM(var)
        for s in seq:
            dfrom = s["JDATELINE_FROM"]
            dto = s["JDATELINE_TO"]
            name = s["name"]
            q = rutil.createResQueryElem(name, dfrom, dto)
            query.add(q)

        resList = R.queryReservation(query)
        vals = []

        dl = datetime.timedelta(1)
        for s in seq:
            dfrom = s["JDATELINE_FROM"]
            dto = s["JDATELINE_TO"]
            name = s["name"]
            dt = dfrom
            prevres = None
            prevmap = None
            while dt <= dto:
                resid = None
                for ans in resList:
                    aname = ans.getRoomName()
                    dres = ans.getResDate()
                    if con.eqDate(dt, dres) and aname == name:
                        resid = ans.getResId()
                        break

                if resid != None:
                    if resid == prevres:
                        prevmap["colspan"] = prevmap["colspan"] + 1
                    else:
                        if prevmap: vals.append(prevmap)
                        rform = RFORM.findElem(resid)
                        sta = resstat.getResStatus(var, rform)
                        form = "resroom"
                        map = {
                            "name": name,
                            "datecol": dt,
                            "colspan": 1,
                            "form": form,
                            "0": _resInfo(var, resid),
                            "1": resstat.COLORS[sta],
                            "hint": "@" + resstat.getStatusS(sta)
                        }
                        prevmap = map
                        prevres = resid
                dt = dt + dl
            if prevmap: vals.append(prevmap)

        var["JDATELINE_MAP"] = {"reservation": {"values": vals}}
Пример #16
0
def checkinaction(action,var):
    cutil.printVar("checkinaction",action,var)
    R = util.RESFORM(var)
    ROOM = util.ROOMLIST(var)
    SE = util.SERVICES(var)
    ROP = util.RESOP(var)
    resName = var["resename"]
    CUST = util.CUSTOMERLIST(var)
       
    if action == "makecheckin" and var["JYESANSWER"] :
        TRANS = MAKECHECKIN(var)
        TRANS.doTrans()
           
    if action == "guestdetails" and var[CHECKINLIST+"_lineset"] :
        var["JAFTERDIALOG_ACTION"] = "acceptdetails" 
        cust.customerDetailsActive(var,None)
        
    if action == "acceptdetails" and var["JUPDIALOG_BUTTON"] == "accept" : 
        xml = var["JUPDIALOG_RES"]
        util.xmlToVar(var,xml,CUSTF)
        cutil.setCopy(var,CUSTF,CHECKINLIST)
    
    if action == "selectguestfromlist" :
        custid =var["JUPDIALOG_RES"]
        if custid == None : return
        __toMap(var,custid,CUST)
        li = ["guestselect"] + CUSTF
        cutil.setCopy(var,li,CHECKINLIST)
    
    if action == "selectguest" :
        var["JUP_DIALOG"] = "?customerselection.xml"
        var['JAFTERDIALOG_ACTION'] = "selectguestfromlist"
        
    if action == "before" :
        roomRes = {}
        reservation = R.findElem(resName)
        # list of guests
        gList = ROP.getResGuestList(resName)
        for r in reservation.getResDetail() :
            
            rname = r.getRoomName()
            room = ROOM.findElem(rname)
            servicename = r.getService()
            serv = SE.findElem(servicename)
            nop = serv.getNoPersons()
            if roomRes.has_key(rname) :
                no = roomRes[rname][0]
                if nop > no : roomRes[rname][0] = nop
            else :
                roomRes[rname] = (nop,room) 
     
            list = []
            wasGuest = False
            for roomname in roomRes.keys() :
                for i in range(roomRes[roomname][0]) :
                    map = { "roomid" : roomname, "roomdesc" : roomRes[roomname][1].getDescription()}
                    # add guest details
                    no = -1
                    found = False
                    for g in gList :
                        if g.getRoomName() == roomname :
                            no = no + 1
                            if no == i :
                                found = True
                                custid = g.getGuestName()
                                __toMap(map,custid,CUST)
                                found = True
                                wasGuest = True
                                break
                    if not found :
                        map["guestselect"] = "<select>"
                        cust.setDefaCustomerNotCopy(map)
                        
                    list.append(map)
                    
            var["JLIST_MAP"] = { CHECKINLIST : list}
            cutil.setChangeEditMode(var,CHECKINLIST,["surname","firstname","title","country"])
            resform = R.findElem(resName)
            assert resform != None
            status = util.resStatus(resform)
            var["isstay"] = (status == 1)
            cutil.setCopy(var,"isstay")
            if status == 2 : cutil.hideButton(var,"acceptchange")
            else : cutil.hideButton(var,"accept")
            if status == 2 and not wasGuest :
                custid = resform.getCustomerName()
                map = list[0]
                __toMap(map,custid,CUST)
Пример #17
0
def dialogaction(action, var):

    cutil.printVar("stay calculation", action, var)

    if action == "guestdetail":
        cust.showCustomerDetails(var, var["guest_name"])

    if action == "before":
        resename = var["JUPDIALOG_START"]
        var["resename"] = resename
        cutil.setCopy(var, ["resename", "balanceat", "status"])
        R = util.RESFORM(var).findElem(resename)
        assert R != None
        (sta, ROZL) = resstat.getResStatusRese(var, R)
        var["status"] = M(resstat.getStatusS(sta))
        var["balanceat"] = ROZL.forday

        seq = []
        st = _toS("servicesatday", ROZL)
        _addElem(seq, st, ROZL.sumcost, None)
        if ROZL.sumcostafter != None: after = ROZL.sumcostafter
        else: after = 0
        _addElem(seq, _toS("servicesafter", ROZL), after, None)

        blist = util.RESOP(var).findBillsForReservation(resename)
        V = vat.CalcVat()
        for b in blist:
            bname = b.getName()
            CC = cbill.BILLCALC(var, b)
            CC.calc()
            s = M("billinfo").format(bname, con.toS(CC.getIssueDate()))
            _addElem(seq, s, CC.getCharge(), None)
            for l in CC.getLines():
                V.addVatLineC(dutil.getGrossValueLine(l),
                              dutil.getNettoValueLine(l),
                              dutil.getTaxValueLine(l), dutil.getVatLine(l))
        vl = V.calculateVat()
        for v in vl:
            (netto, vatt, gross, level, vats) = v
            s = M("vatvalueinfo").format(vats)
            _addElem(seq, s, vatt, None)

        _addElem(seq, M("paymentsum"), None, ROZL.sumpay)
        if ROZL.advancepayment != None:
            _addElem(seq, M("advanceincluded"), None, ROZL.advancepayment)

        st = _toS("balanceatf", ROZL)
        _addElem(seq, st, *calcBalance(ROZL.sumcost, ROZL.sumpay))

        cutil.setJMapList(var, LISTID, seq)

        L1 = cbill.BILLPOSADD(var, COSTS)
        for r in ROZL.costlist:
            idp = r.getId()
            L1.addMa({}, r, idp)
        L1.close()

        L2 = cbill.BILLPOSADD(var, FUTURECOSTS)
        for r in ROZL.costlistafter:
            idp = r.getId()
            L2.addMa({}, r, idp)
        L2.close()
Пример #18
0
 def changeReservation(self, resename):
     if self.var[self.__confid]:
         util.RESOP(self.var).changeStatusToReserv(resename)
     else:
         util.RESOP(self.var).changeStatusToNotConfirmed(resename)
Пример #19
0
def showstay(action, var):
    cutil.printVar("show stay", action, var)

    if action == "before":
        rbefore.setvarBefore(var)
        # after
        _listOfPayments(var)
        _ListOfBills(var)
        _setChangedFalse(var)
        PA = reseparam.RESPARAM(rutil.getReseName(var))
        PA.setParam(var)
        PA.copyParam(var)

    if var["billlistwaschanged"]:
        _setChangedFalse(var)
        _ListOfBills(var)

    if action == "crud_readlist" and var["JLIST_NAME"] == BILLIST:
        _ListOfBills(var)

    if action == "afterbill" and var["JUPDIALOG_BUTTON"] == "acceptdocument":
        _ListOfBills(var)

    if action == "payerdetail":
        cust.showCustomerDetails(var, var["payer_name"])

    if action == "changetoreserv" and var["JYESANSWER"]:
        res = getReservForDay(var)
        resname = res[0].getResId()
        R = util.RESOP(var)
        R.changeStatusToReserv(resname)
        a = cutil.createArrayList()
        R.setResGuestList(resname, a)
        var["JCLOSE_DIALOG"] = True
        var["JREFRESH_DATELINE_reservation"] = ""

    if action == "addpayment":
        var["JUP_DIALOG"] = "?addpayment.xml"
        var["JAFTERDIALOG_ACTION"] = "afteraddpayment"

    if action == "paymentslist":
        assert var["billname"] != None
        var["JUP_DIALOG"] = "?listofpayment.xml"
        var["JAFTERDIALOG_ACTION"] = "afterlistpayments"
        var["JUPDIALOG_START"] = var["billname"]

    if action == "printbill" and var[BILLIST + "_lineset"]:
        var["JUP_DIALOG"] = "?billprint.xml"
        var["JUPDIALOG_START"] = var["billname"]

    if action == "afteraddpayment" and var["JUPDIALOG_BUTTON"] == "addpayment":
        _listOfPayments(var)

    if action == "guestdesc":
        var["JAFTERDIALOG_ACTION"] = "acceptdetails"
        cust.showCustomerDetailstoActive(var, var[CUST + "name"])

    if action == "acceptdetails" and var["JUPDIALOG_BUTTON"] == "acceptask":
        xml = var["JUPDIALOG_RES"]
        util.xmlToVar(var, xml, cust.getCustFieldIdAll(), CUST)
        cutil.setCopy(var, cust.getCustFieldIdAll(), None, CUST)
        name = var[CUST + "name"]
        resename = rutil.getReseName(var)
        util.RESFORM(var).changeCustName(resename, name)

    if action == "guestdetail":
        cust.showCustomerDetails(var, var["guest_name"])

    if action == "listpdf" and var[BILLIST + "_lineset"]:
        var["JUP_DIALOG"] = "?pdflist.xml"
        var["JUPDIALOG_START"] = var["billname"]
Пример #20
0
def dialogaction(action, var):

    cutil.printVar("test48", action, var)

    if action == "test1":
        resename = var["resename"]
        R = util.RESFORM(var)
        ROP = util.RESOP(var)
        RR = R.findElem(resename)
        print RR
        lg = ROP.getResGuestList(resename)
        for g in lg:
            print g.getGuestName()
        gName = lg[0].getGuestName()
        print gName
        dli = RR.getResDetail()
        for l in dli:
            print g.getRoomName()
        roomName = dli[0].getRoomName()
        print roomName
        S = util.SERVICES(var)
        se = util.newOtherService(var)
        se.setName("addse")
        se.setVat("free")
        ase = S.addElem(se)
        rpa = util.newResAddPayment()
        rpa.setGuestName(gName)
        rpa.setRoomName(roomName)
        rpa.setResDate(con.javaDate(2015, 12, 23))
        rpa.setPriceList(con.toB(100.56))
        rpa.setPrice(con.toB(50))
        rpa.setPriceTotal(con.toB(200))
        rpa.setService(ase.getName())
        arpa = ROP.addResAddPayment(resename, rpa)
        print arpa.getName(), arpa.getId(), " ", arpa.getResDate()
        assert arpa.getId() != None
        li = cutil.JOURNAL(var).getList()
        for l in li:
            print l.getId()
        J = li[0]
        print J.getName(), J.getJournalType(), J.getJournalTypeSpec(
        ), J.getJournalElem1(), J.getJournalElem2()
        assert "ADDPAYMENT" == J.getJournalType()
        assert resename == J.getJournalElem1()
        assert arpa.getId() == int(J.getJournalElem2())
        var["OK"] = True

    if action == "test2":
        bname = var["bname"]
        p = util.newBillPayment()
        p.setBillName(bname)
        p.setPaymentMethod("Cache")
        p.setDateOfPayment(cutil.toDate(cutil.today()))
        p.setPaymentTotal(con.toB(1000))
        addP = util.PAYMENTOP(var).addPaymentForBill(bname, p)
        li = cutil.JOURNAL(var).getList()
        for l in li:
            print l.getId(), l.getJournalType(), l.getJournalElem1(
            ), l.getJournalElem2(), l.getCreationDate()
        J = li[0]
        print J.getName(), J.getJournalType(), J.getJournalTypeSpec(
        ), J.getJournalElem1(), J.getJournalElem2(),
        assert "ADDBILLPAYMENT" == J.getJournalType()
        assert addP.getId() == int(J.getJournalElem1())
        assert bname == J.getJournalElem2()
        # now remove
        util.PAYMENTOP(var).removePaymentForBill(bname, addP.getId())
        li = cutil.JOURNAL(var).getList()
        for l in li:
            print l.getId(), l.getJournalType(), l.getJournalElem1(
            ), l.getJournalElem2(), l.getCreationDate()
        J = li[0]
        print J.getName(), J.getJournalType(), J.getJournalTypeSpec(
        ), J.getJournalElem1(), J.getJournalElem2()
        assert "REMOVEBILLPAYMENT" == J.getJournalType()
        assert addP.getId() == int(J.getJournalElem1())
        assert bname == J.getJournalElem2()
        var["OK"] = True

    if action == "test3":
        li = cutil.JOURNAL(var).getList()
        JM = journalmess.JournalMess(var)
        for l in li:
            print l.getId(), l.getJournalType(), l.getJournalElem1(
            ), l.getJournalElem2(), l.getCreationDate()
            print "mess=", JM.getJournalDescr(l)
            assert None != JM.getJournalDescr(l)
        J = li[1]
        print J.getName(), J.getJournalType(), J.getJournalTypeSpec(
        ), J.getJournalElem1(), J.getJournalElem2()
        billname = J.getJournalElem2()
        print billname
        # remove bill and test message with removed bill
        util.BILLLIST(var).deleteElemByName(billname)
        li = cutil.JOURNAL(var).getList()
        JM = journalmess.JournalMess(var)
        for l in li:
            print l.getId(), l.getJournalType(), l.getJournalElem1(
            ), l.getJournalElem2(), l.getCreationDate()
            print "mess=", JM.getJournalDescr(l)
            assert None != JM.getJournalDescr(l)
        var["OK"] = True

    if action == "test4":
        li = cutil.JOURNAL(var).getList()
        JM = journalmess.JournalMess(var)
        for l in li:
            print l.getId(), l.getJournalType(), l.getJournalElem1(
            ), l.getJournalElem2(), l.getCreationDate()
            print "mess=", JM.getJournalDescr(l)
            assert None != JM.getJournalDescr(l)
        var["OK"] = True
Пример #21
0
def elemserviceaction(action, var):

    cutil.printVar("elemserviceaction", action, var)

    serv = util.SERVICES(var)

    if action == "before":
        if var["JCRUD_DIALOG"] == "crud_add":
            var["noperson"] = D.getDataHI(10)
            var["noextrabeds"] = D.getDataHI(11)
            var["nochildren"] = D.getDataHI(12)
            var["vat"] = D.getDataH(14)
            var["perperson"] = D.getDataHB(13)
            cutil.setCopy(
                var,
                ["noperson", "noextrabeds", "nochildren", "vat", "perperson"])
        else:
            cutil.hideButton(var, "showrooms", False)

    if action == "showrooms":
        l = util.listOfRoomsForService(var, var["name"])
        print l
        for s in l:
            print s
        var["JUPDIALOG_START"] = xmlutil.listNumberToCVS(l, "-1")
        var["JUP_DIALOG"] = "?roomslist.xml"

    if action == "crud_add" and not var["JCRUD_AFTERCONF"]:
        if util.duplicateService(var) or _notverifyService(var): return
        var["JYESNO_MESSAGE"] = M("ADDNEWSERVICEASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_add" and var["JCRUD_AFTERCONF"]:
        se = _createService(var)
        serv.addElem(se)
        var["JCLOSE_DIALOG"] = True
        return

    if action == "crud_change" and not var["JCRUD_AFTERCONF"]:
        if _notverifyService(var): return
        var["JYESNO_MESSAGE"] = M("CHANGESERVICEASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_change" and var["JCRUD_AFTERCONF"]:
        se = _createService(var)
        serv.changeElem(se)
        var["JCLOSE_DIALOG"] = True

    if action == "crud_remove" and not var["JCRUD_AFTERCONF"]:
        l = util.listOfRoomsForService(var, var["name"])
        l1 = util.RESOP(var).getReseForService(var["name"])
        l2 = util.listOfPriceListForService(var, var["name"])
        if len(l) > 0 or len(l1) > 0 or len(l2) > 0:
            var["JERROR_MESSAGE"] = M("cannotremoveservice").format(
                len(l), len(l2), len(l1))
            return
        var["JYESNO_MESSAGE"] = M("DELETESERVICEASK")
        var["JMESSAGE_TITLE"] = ""
        return

    if action == "crud_remove" and var["JCRUD_AFTERCONF"]:
        se = _createService(var)
        serv.deleteElem(se)
        var["JCLOSE_DIALOG"] = True
Пример #22
0
def getResStatusRese(var, r, room=None, today=None):
    """ Calculates and returns the status of the reservation
    Args: 
       var
       r ReservationForm
       room room symbol
       today 
    Returns:
       0 reservation scheduled
       1 reservation confirmed
       2 reservation advance paid 
       3 reservation advanced expired
       
       4 customer not arrived
       5 vacant not paid
       6 vacant paid
       7 vacant excess payment
       
       8 occupied, not paid
       9 occupied, advance paid
       10 occupied paid
       11 occupied excess paid
       
       12 canceled              
    """
    S = RESSTATUS()
    if today == None: today = con.today()
    S.forday = today
    #    print today
    sym = r.getName()
    re = util.resStatus(r)
    if re == 0: return (12, S)
    li = rutil.getPayments(var, sym)
    for l in li:
        if room != None and room != l.getRoomName(): continue
        (S.arrival,
         S.departure) = rutil.calculateDates(S.arrival, S.departure, l)

    if today < S.arrival and re != 1:
        advance = r.getAdvanceDeposit()
        resstatusset = False
        if advance == None: resstatusset = True
        else:
            term = con.toJDate(r.getTermOfAdvanceDeposit())
            if term != None:
                if today < term: resstatusset = True

        if resstatusset:
            if re == 2: return (1, S)
            if re == 3: return (0, S)
            # internal error, not expected
            # TO DO
            return (0, S)

        if r.getAdvancePayment() == None: return (3, S)
        if r.getAdvancePayment() < r.getAdvanceDeposit(): return (3, S)
        return (2, S)

    if re != 1: return (4, S)
    sta = None
    # 0 - not paid
    # 1 - paid
    # 2 - excess paid
    # 3 - advance paid
    for l in li:
        add = False
        re = con.toJDate(l.getResDate())
        if util.isRoomService(l.getServiceType()) and re < today: add = True
        if not util.isRoomService(l.getServiceType()) and re <= today:
            add = True
        #        print sym,add,l.getPriceTotal()
        if add:
            S.sumcost = con.addDecimal(
                S.sumcost, con.BigDecimalToDecimal(l.getPriceTotal()))
            S.costlist.append(l)
        else:
            if S.sumcostafter == None: S.sumcostafter = 0.0
            S.sumcostafter = con.addDecimal(
                S.sumcostafter, con.BigDecimalToDecimal(l.getPriceTotal()))
            S.costlistafter.append(l)

    S.advancepayment = con.BigDecimalToDecimal(r.getAdvancePayment())
    if S.advancepayment != None and S.advancepayment >= S.sumcost: sta = 3
    else:
        bli = util.RESOP(var).findBillsForReservation(sym)
        for b in bli:
            (suma, advanced) = rutil.countPaymentsA(var, b.getName())
            S.sumpay = con.addDecimal(S.sumpay, suma)
            S.advancepaymentused = con.addDecimal(S.advancepaymentused,
                                                  advanced)
        S.sumpay = con.addDecimal(S.sumpay, S.advancepayment)
        #        print sym,S.sumcost,S.sumpay
        if S.sumcost == S.sumpay and S.sumcost > 0.0: sta = 1
        elif S.sumcost > S.sumpay: sta = 0
        elif S.sumcost == 0 and S.sumpay == 0: sta = 0
        else: sta = 2

    S.advancepaymentleft = con.minusDecimal(S.advancepayment,
                                            S.advancepaymentused)
    if today <= S.departure:
        if sta == 0: return (8, S)
        if sta == 3: return (9, S)
        if sta == 2: return (11, S)
        return (10, S)

    if sta == 0: return (5, S)
    if sta == 3: return (6, S)
    if sta == 2: return (7, S)
    return (6, S)