class StockAdjustmentWindow(WindowController):
    def __init__(self, **kw):
        super(StockAdjustmentWindow, self).__init__(**kw)
        self.window.title = "Stock Adjustment"
        self.trans = Transaction()
        
        v= VBox (parent=self.window)

        columns = (Column(name="Code", attribute="product.code", readOnly=True),
                   Column(name="Name", attribute="product.name", readOnly=True))

        self.searcher = Search(parent=v, columns=columns,
                               cls=Stock, searcher=self.trans,
                               onAction=self.listValues)

        columns = (Column(name="Code", attribute="product.code", readOnly=True),
                   Column(name="Name", attribute="product.name", readOnly=True),
                   Column(name="Level", attribute="level"))
        self.stockEditor = Grid(parent=v, columns=columns)
        actionContainer = HBox(parent=v, expand=False)
        save = Button(parent=actionContainer, label="Save", onAction=self.save)
        discard = Button(parent=actionContainer, label="Discard", onAction=self.discard)

    def commitValue(self, value):
        self.stockEditor.commitValue(value)

    def listValues(self, sender):
        self.commitValue(sender.value)

    def save(self, *ignore):
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        self.commitValue(None)
Exemple #2
0
class ReceiptWindow(cimarron.skin.WindowController):
    def __init__(self, **kw):
        super(ReceiptWindow, self).__init__(**kw)
        self.window.title = "Receipt Generation"
        self.trans = Transaction()
        self.target = Receipt(actualDate=today())
        self.trans.track(self.target)

        v = cimarron.skin.VBox(parent=self.window, expand=True, fill=True)
        h1 = cimarron.skin.HBox(parent=v, expand=False, fill=True)
        h2 = cimarron.skin.HBox(parent=v, expand=False, fill=False)
        v1 = cimarron.skin.VBox(parent=v)
        actionContainer = cimarron.skin.HBox(parent=v, expand=False, fill=True)

        columns = (cimarron.skin.Column(name="Name", attribute="name"),
                   cimarron.skin.Column(name="Surname", attribute="surname"))
        self.person = cimarron.skin.SearchEntry(parent=h1,
                                                cls=Person,
                                                searcher=self.trans,
                                                columns=columns,
                                                attribute="person")
        cimarron.skin.Label(parent=h2, text="Date:")
        self.actualDate = cimarron.skin.Entry(parent=h2,
                                              attribute="actualDate")

        cimarron.skin.Label(parent=h2, text="Amount:")
        self.amount = cimarron.skin.Entry(parent=h2, attribute="amount")

        cimarron.skin.Label(parent=v1,
                            text="Concept:",
                            expand=False,
                            fill=False)
        self.concept = cimarron.skin.MultiLine(parent=v1, attribute="concept")

        save = cimarron.skin.Button(parent=actionContainer,
                                    label="Save",
                                    onAction=self.save)
        discard = cimarron.skin.Button(parent=actionContainer,
                                       label="Discard",
                                       onAction=self.discard)
        self.refresh()

    def refresh(self):
        super(ReceiptWindow, self).refresh()
        for entry in self.person, self.amount, self.concept, self.actualDate:
            entry.newTarget(self.value)

    def save(self, *ignore):
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        self.newTarget(Receipt(actualDate=today()))
        self.trans.track(self.target)
class ReceiptWindow(cimarron.skin.WindowController):
    def __init__(self, **kw):
        super(ReceiptWindow, self).__init__(**kw)
        self.window.title = "Receipt Generation"
        self.trans = Transaction()
        self.target=Receipt(actualDate=today())
        self.trans.track(self.target)

        v = cimarron.skin.VBox(parent=self.window, expand=True, fill=True)
        h1 = cimarron.skin.HBox(parent=v, expand=False, fill=True)
        h2 = cimarron.skin.HBox(parent=v, expand=False, fill=False)
        v1 = cimarron.skin.VBox(parent=v)
        actionContainer = cimarron.skin.HBox(parent=v, expand=False, fill=True)

        columns = (cimarron.skin.Column(name="Name", attribute="name"),
                   cimarron.skin.Column(name="Surname", attribute="surname"))
        self.person = cimarron.skin.SearchEntry(parent=h1, cls=Person,
                                                searcher=self.trans, columns=columns,
                                                attribute="person")
        cimarron.skin.Label(parent=h2, text="Date:")
        self.actualDate = cimarron.skin.Entry(parent=h2, attribute="actualDate")
        
        cimarron.skin.Label(parent=h2, text="Amount:")
        self.amount = cimarron.skin.Entry(parent=h2,  attribute="amount")
        
        cimarron.skin.Label(parent=v1, text="Concept:", expand=False, fill=False)
        self.concept = cimarron.skin.MultiLine(parent=v1, attribute="concept")
        
        save = cimarron.skin.Button(parent=actionContainer, label="Save", onAction=self.save)
        discard = cimarron.skin.Button(parent=actionContainer, label="Discard", onAction=self.discard)
        self.refresh()
        

    
    def refresh(self):
        super(ReceiptWindow, self).refresh()
        for entry in self.person, self.amount,self.concept,self.actualDate:
            entry.newTarget(self.value)

    def save(self, *ignore):
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        self.newTarget(Receipt(actualDate=today()))
        self.trans.track(self.target)
class StockAdjustmentWindow(WindowController):
    def __init__(self, **kw):
        super(StockAdjustmentWindow, self).__init__(**kw)
        self.window.title = "Stock Adjustment"
        self.trans = Transaction()

        v = VBox(parent=self.window)

        columns = (Column(name="Code", attribute="product.code",
                          readOnly=True),
                   Column(name="Name", attribute="product.name",
                          readOnly=True))

        self.searcher = Search(parent=v,
                               columns=columns,
                               cls=Stock,
                               searcher=self.trans,
                               onAction=self.listValues)

        columns = (Column(name="Code", attribute="product.code",
                          readOnly=True),
                   Column(name="Name", attribute="product.name",
                          readOnly=True),
                   Column(name="Level", attribute="level"))
        self.stockEditor = Grid(parent=v, columns=columns)
        actionContainer = HBox(parent=v, expand=False)
        save = Button(parent=actionContainer, label="Save", onAction=self.save)
        discard = Button(parent=actionContainer,
                         label="Discard",
                         onAction=self.discard)

    def commitValue(self, value):
        self.stockEditor.commitValue(value)

    def listValues(self, sender):
        self.commitValue(sender.value)

    def save(self, *ignore):
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        self.commitValue(None)
Exemple #5
0
class ReceiptGui(WindowController):
    def __init__(self, **kwargs):
        super(ReceiptGui, self).__init__(**kwargs)
        self.trans = Transaction()
        self.pos ,= self.trans.search('PointOfSale')
        self.buildUI()

    def buildUI(self):
        self.window.title = 'Generacion de Recibo'

        v1 = VBox(parent=self.window, expand=True, fill=True)
        h0 = HBox(parent=v1, expand=False, fill=True)
        v0left = VBox(parent=h0, expand=False, fill=True)
        v0right = VBox(parent=h0, expand=False, fill=True)
        v2 = VBox(parent=v1)
        actionContainer = HBox(parent=v1, expand=False, fill=True)

        Label(parent=v0left, text='Cuenta Contable:')
        columns= (Column(name='Cod', attribute='code'),
                  Column(name='Nombre', attribute='name',
                         operator=Qualifier.like),)
        self.category = SearchEntry(parent=v0right, columns=columns,
                                    searcher=self.trans, cls=MovementAccount)

        Label(parent=v0left, text='Cliente:')
        columns = (Column(name='Nombre', attribute='person.name',
                          operator=Qualifier.like),
                   Column(name='Apellido', attribute='person.surname',
                          operator=Qualifier.like),)
        self.otherParty = SearchEntry(parent=v0right, cls=Client,
                                      searcher=self.trans,
                                      columns=columns)


        Label(parent=v0left, text='Numero:')
        self.docNumber = Entry(parent=v0right)

        Label(parent=v0left, text='Fecha:')
        self.actualDate = Entry(parent=v0right,emptyValue=now())
        self.actualDate.commitValue(self.actualDate.value)

        Label(parent=v0left, text='Monto:')
        self.amount = Entry(parent=v0right)
        
        Label(parent=v2, text='Concepto:', expand=False, fill=False)
        self.concept = MultiLine(parent=v2)
        
        save = Button(parent=actionContainer, label='Guardar',
                      onAction=self.save)

        discard = Button(parent=actionContainer, label='Descartar',
                         onAction=self.discard)


    def save(self, *ignore):
        receipt = Receipt(number=self.docNumber.value,
                          type='X',
                          detail=self.concept.value,
                          amount=self.amount.value,
                          actualDate=self.actualDate.value)
        self.trans.track(receipt)
        #we use pettyRegister beacause we store the same data that pettyCash
        #doing a receipt
        receipt.pettyRegister(self.pos,
                              self.otherParty.value,
                              self.category.value,
                              None)
                             # self.account.value) this goes instead
                             #of the above none, do we want this data?
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        for i in self.__dict__:
            if isinstance(self.__dict__[i],Entry) or isinstance(self.__dict__[i],SearchEntry) or isinstance(self.__dict__[i],MultiLine):
                if hasattr(self.__dict__[i],'emptyValue'):
                    self.__dict__[i].commitValue(self.__dict__[i].emptyValue)
                else:
                    self.__dict__[i].commitValue(None)
                    self.__dict__[i].refresh()
class LoadPettyCashEntry(WindowController):
    def __init__(self, **kwargs):
        super(LoadPettyCashEntry, self).__init__(**kwargs)
        self.trans = Transaction()

        # it assured existence point of sale
        pointOfSale = self.trans.search('PointOfSale')
        if not pointOfSale:
            from pointOfSale import main as pofMain
            pofMain()
            pointOfSale = self.trans.search('PointOfSale')        
            if pointOfSale:
                #mensaje error, que estas haciendo
                pass
        
        self.pos = pointOfSale[0]
        self.buildUI()
        
    def buildUI(self):
        self.window.title = 'Caja chica - Carga: "' + self.pos.name +'"'
        v = VBox(parent=self.window)
        f0 = Frame(parent=v, label='Cuenta')
        h0 = HBox(parent=f0)
        right0 = VBox(parent=h0)
        columns= (Column(name='Nombre', attribute='name',
                         operator=Qualifier.like),)
        self.account = SearchEntry(parent=right0, columns=columns,
                                   searcher=self.trans, cls=CustomerAccount)


        f1 = Frame(parent=v, label='Operacion')
        h1 = HBox(parent=f1)
        left1 = VBox(parent=h1)
        right1 = VBox(parent=h1)

        # Label(parent=left1, text='Fecha')
        # fecha = Entry(parent=right1)
        
        Label(parent=left1, text='Categoria')
        columns= (Column(name='Cod', attribute='code'),
                  Column(name='Nombre', attribute='name',
                         operator=Qualifier.like),)
        self.category = SearchEntry(parent=right1, columns=columns,
                                    searcher=self.trans, cls=MovementAccount)


        f2 = Frame(parent=v, label='Comprobante')
        h2 = HBox(parent=f2)
        left2 = VBox(parent=h2)
        right2 = VBox(parent=h2)

        Label(parent=left2, text='Tipo')
        columns= (Column(name='Nombre', attribute='name',
                         operator=Qualifier.like),)
        self.docType = SearchEntry(parent=right2, columns=columns,
                                   searcher=DocumentType,
                                   onAction=self.setThirdLabel)

        Label(parent=left2, text='Numero')
        self.docNumber = Entry(parent=right2)

        Label(parent=left2, text='Fecha')
        self.docDate = Entry(parent=right2, emptyValue=now())
        self.docDate.commitValue(self.docDate.value)

        self.thirdLabel = Label(parent=left2)
        columns= (Column(name='Apellido', attribute='person.surname',
                         operator=Qualifier.like),)
        self.otherParty = SearchEntry(parent=right2, columns=columns,
                                      searcher=self.trans)
        self.otherParty.disable()


        # f3 = Frame(parent=v, label='Montos')
        h3 = HBox(parent=v)

        # Label(parent=h3, text='Ingreso')
        # self.moneyIn = Entry(parent=h3)

        # Label(parent=h3, text='Egreso')
        # self.moneyOut = Entry(parent=h3)

        Label(parent=h3, text='Monto')
        self.amount = Entry(parent=h3)

        Label(parent=h3, text='Descripcion')
        self.description = Entry(parent=h3)


        h4 = HBox(parent=v)
        Button(parent=h4, label='Guardar', onAction=self.save)
        Button(parent=h4, label='Descartar', onAction=self.discard)

    def setThirdLabel(self, *ignore):
        if self.docType.value:
            if self.docType.value['other']:
                self.thirdLabel.text = self.docType.value['other'].__name__
                self.otherParty.cls = self.docType.value['other']
                self.otherParty.enable()
            else:
                self.thirdLabel.text = "Documento interno"
    

    def save(self, *ignore):
        # build a document of the right kind
        # cls = self.docType.value['cls']
        # document = cls(amount=self.amount.value, number=self.docNumber.value,
        #                type=self.docType.value['type'], )
        # set the other side
        # document.setattr(self.docType.value['attr'], self.provider.value)
        cls = self.docType.value['cls']
        document = cls(number=self.docNumber.value,
                       type=self.docType.value['type'],
                       detail=self.description.value,
                       amount=self.amount.value,
                       actualDate=self.docDate.value)
        self.trans.track(document)
        document.pettyRegister(self.pos,
                               self.otherParty.value,
                               self.category.value,
                               self.account.value)
        # register w/ the trans!
        # save it
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        for i in self.__dict__:
            if isinstance(self.__dict__[i],Entry) or isinstance(self.__dict__[i],SearchEntry):
                if hasattr(self.__dict__[i],'emptyValue'):
                    self.__dict__[i].commitValue(self.__dict__[i].emptyValue)
                else:
                    self.__dict__[i].commitValue(None)
                    self.__dict__[i].refresh()

        #this is made apart beacause is not generic, thirdLabel is the only
        #label in self that changes and otherParty is the only widget Disabled
        self.thirdLabel.text = ''
        self.otherParty.disable()
class LoadPettyCashEntry(WindowController):
    def __init__(self, **kwargs):
        super(LoadPettyCashEntry, self).__init__(**kwargs)
        self.trans = Transaction()

        # it assured existence point of sale
        pointOfSale = self.trans.search('PointOfSale')
        if not pointOfSale:
            from pointOfSale import main as pofMain
            pofMain()
            pointOfSale = self.trans.search('PointOfSale')
            if pointOfSale:
                #mensaje error, que estas haciendo
                pass

        self.pos = pointOfSale[0]
        self.buildUI()

    def buildUI(self):
        self.window.title = 'Caja chica - Carga: "' + self.pos.name + '"'
        v = VBox(parent=self.window)
        f0 = Frame(parent=v, label='Cuenta')
        h0 = HBox(parent=f0)
        right0 = VBox(parent=h0)
        columns = (Column(name='Nombre',
                          attribute='name',
                          operator=Qualifier.like), )
        self.account = SearchEntry(parent=right0,
                                   columns=columns,
                                   searcher=self.trans,
                                   cls=CustomerAccount)

        f1 = Frame(parent=v, label='Operacion')
        h1 = HBox(parent=f1)
        left1 = VBox(parent=h1)
        right1 = VBox(parent=h1)

        # Label(parent=left1, text='Fecha')
        # fecha = Entry(parent=right1)

        Label(parent=left1, text='Categoria')
        columns = (
            Column(name='Cod', attribute='code'),
            Column(name='Nombre', attribute='name', operator=Qualifier.like),
        )
        self.category = SearchEntry(parent=right1,
                                    columns=columns,
                                    searcher=self.trans,
                                    cls=MovementAccount)

        f2 = Frame(parent=v, label='Comprobante')
        h2 = HBox(parent=f2)
        left2 = VBox(parent=h2)
        right2 = VBox(parent=h2)

        Label(parent=left2, text='Tipo')
        columns = (Column(name='Nombre',
                          attribute='name',
                          operator=Qualifier.like), )
        self.docType = SearchEntry(parent=right2,
                                   columns=columns,
                                   searcher=DocumentType,
                                   onAction=self.setThirdLabel)

        Label(parent=left2, text='Numero')
        self.docNumber = Entry(parent=right2)

        Label(parent=left2, text='Fecha')
        self.docDate = Entry(parent=right2, emptyValue=now())
        self.docDate.commitValue(self.docDate.value)

        self.thirdLabel = Label(parent=left2)
        columns = (Column(name='Apellido',
                          attribute='person.surname',
                          operator=Qualifier.like), )
        self.otherParty = SearchEntry(parent=right2,
                                      columns=columns,
                                      searcher=self.trans)
        self.otherParty.disable()

        # f3 = Frame(parent=v, label='Montos')
        h3 = HBox(parent=v)

        # Label(parent=h3, text='Ingreso')
        # self.moneyIn = Entry(parent=h3)

        # Label(parent=h3, text='Egreso')
        # self.moneyOut = Entry(parent=h3)

        Label(parent=h3, text='Monto')
        self.amount = Entry(parent=h3)

        Label(parent=h3, text='Descripcion')
        self.description = Entry(parent=h3)

        h4 = HBox(parent=v)
        Button(parent=h4, label='Guardar', onAction=self.save)
        Button(parent=h4, label='Descartar', onAction=self.discard)

    def setThirdLabel(self, *ignore):
        if self.docType.value:
            if self.docType.value['other']:
                self.thirdLabel.text = self.docType.value['other'].__name__
                self.otherParty.cls = self.docType.value['other']
                self.otherParty.enable()
            else:
                self.thirdLabel.text = "Documento interno"

    def save(self, *ignore):
        # build a document of the right kind
        # cls = self.docType.value['cls']
        # document = cls(amount=self.amount.value, number=self.docNumber.value,
        #                type=self.docType.value['type'], )
        # set the other side
        # document.setattr(self.docType.value['attr'], self.provider.value)
        cls = self.docType.value['cls']
        document = cls(number=self.docNumber.value,
                       type=self.docType.value['type'],
                       detail=self.description.value,
                       amount=self.amount.value,
                       actualDate=self.docDate.value)
        self.trans.track(document)
        document.pettyRegister(self.pos, self.otherParty.value,
                               self.category.value, self.account.value)
        # register w/ the trans!
        # save it
        self.trans.save()

    def discard(self, *ignore):
        self.trans.discard()
        for i in self.__dict__:
            if isinstance(self.__dict__[i], Entry) or isinstance(
                    self.__dict__[i], SearchEntry):
                if hasattr(self.__dict__[i], 'emptyValue'):
                    self.__dict__[i].commitValue(self.__dict__[i].emptyValue)
                else:
                    self.__dict__[i].commitValue(None)
                    self.__dict__[i].refresh()

        #this is made apart beacause is not generic, thirdLabel is the only
        #label in self that changes and otherParty is the only widget Disabled
        self.thirdLabel.text = ''
        self.otherParty.disable()