Exemplo n.º 1
0
    def delete_invoice(uid):
        inv = invapi.get_doc(uid)
        old_status = inv.meta.status
        invapi.delete(inv)
        if workerqueue is not None:
            obj = doc_to_workobject(inv, objtype=WorkObject.INV, action=WorkObject.DELETE)
            workerqueue(work=json_dumps(obj))
            if old_status == Status.COMITTED:
                obj = doc_to_workobject(inv, objtype=WorkObject.INV_TRANS, action=WorkObject.DELETE)
                workerqueue(work=json_dumps(obj))

        return {'status': inv.meta.status}
Exemplo n.º 2
0
 def postear_invoice(uid):
     inv = invapi.get_doc(uid)
     invapi.commit(inv)
     if workerqueue is not None:
         obj = doc_to_workobject(inv, objtype=WorkObject.INV_TRANS, action=WorkObject.CREATE)
         workerqueue(work=json_dumps(obj))
     return {'status': inv.meta.status}
Exemplo n.º 3
0
    def create_invoice():
        json_content = request.body.read()
        if not json_content:
            return ''

        content = json_loads(json_content)
        inv, options = parse_invoice_and_options(content)
        fix_inv_by_options(dbapi, inv, options)
        if inv.meta.timestamp is None:
            inv.meta.timestamp = datetime.datetime.now()
        # at this point, inv should no longer change

        if options.crear_cliente:  # create client if not exist
            client = inv.meta.client
            if not dbapi.get(Client, client.codigo):
                dbapi.save(client)

        inv = invapi.save(inv)

        # increment the next invoice's number
        if options.incrementar_codigo:
            user = User(username=inv.meta.user)
            dbapi.update(user, {'last_factura': int(inv.meta.codigo) + 1})
        dbapi.db_session.commit()

        if workerqueue is not None:
            obj = doc_to_workobject(inv, objtype=WorkObject.INV, action=WorkObject.CREATE)
            workerqueue(work=json_dumps(obj))

        return {'codigo': inv.meta.uid}
Exemplo n.º 4
0
 def delete_ingreso(ingreso_id):
     trans = transapi.get_doc(ingreso_id)
     old_status = trans.meta.status
     transapi.delete(trans)
     if forward_transaction is not None and old_status == Status.COMITTED:
         obj = doc_to_workobject(trans, action=WorkObject.DELETE, objtype=WorkObject.TRANS)
         forward_transaction(work=json_dumps(obj))
     return {'status': trans.meta.status}
Exemplo n.º 5
0
    def eliminar_factura():
        almacen_id = int(request.forms.get('almacen_id'))
        codigo = request.forms.get('codigo').strip()
        ref = request.forms.get('motivo')
        if not ref:
            abort(400, 'escriba el motivo')
        user = get_user(request)
        db_instance = get_inv_db_instance(dbapi.db_session, almacen_id, codigo)
        if db_instance is None:
            alm = dbapi.get(almacen_id, Store)
            db_instance = dbapi.db_session.query(NNota).filter_by(
                almacen_ruc=alm.ruc, codigo=codigo).first()
        if db_instance is None:
            return eliminar_factura_form('Factura no existe')

        if db_instance.status == Status.DELETED:
            # already deleted
            redirect('/app/nota/{}'.format(db_instance.id))

        old_status = db_instance.status

        comment = Comment(
            user_id=user['username'],
            timestamp=datetime.datetime.now(),
            comment=ref,
            objtype='notas',
            objid=str(db_instance.id),
        )
        dbapi.create(comment)
        doc = invapi.get_doc_from_file(db_instance.items_location)
        doc.meta.status = db_instance.status

        try:
            invapi.delete(doc)
        except ValueError:
            abort(400)

        if workqueue is not None:
            obj = doc_to_workobject(doc, objtype=WorkObject.INV, action=WorkObject.DELETE)
            workqueue(work=json_dumps(obj))
            if old_status == Status.COMITTED:
                obj = doc_to_workobject(doc, objtype=WorkObject.INV_TRANS, action=WorkObject.DELETE)
                workqueue(work=json_dumps(obj))
        redirect('/app/nota/{}'.format(db_instance.id))
Exemplo n.º 6
0
 def postear_ingreso(ingreso_id):
     trans = transapi.get_doc(ingreso_id)
     transapi.commit(trans)
     if forward_transaction is not None:
         if trans.meta.trans_type == TransType.EXTERNAL:
             trans.meta.dest = 4  # policentro
             trans.meta.trans_type = TransType.TRANSFER
         obj = doc_to_workobject(trans, action=WorkObject.CREATE, objtype=WorkObject.TRANS)
         forward_transaction(work=json_dumps(obj))
     return {'status': trans.meta.status}
Exemplo n.º 7
0
def main():
    root = 'http://45.55.88.99:99/'
    auth = ('test', 'han')
    processor = ForwardRequestProcessor(dbapi, root, auth, codename='test')

    start = datetime.datetime(2015, 12, 1)
    end = datetime.datetime(2016, 1, 1)
    with dbapi.session:
        for meta in invapi.search_metadata_by_date_range(start, end, status=Status.COMITTED):
            r = requests.get('http://192.168.0.23/api/nota/{}'.format(meta.uid), auth=('yu', 'yu'))
            if r.status_code != 200:
                print r.status_code
                continue
            inv = Invoice.deserialize(r.json())
            work = doc_to_workobject(inv, action=WorkObject.CREATE, objtype=WorkObject.INV)
            processor.exec_work(work)
            print inv.meta.uid,  'created'
            work2 = doc_to_workobject(inv, action=WorkObject.CREATE, objtype=WorkObject.INV_TRANS)
            processor.exec_work(work2)
            print inv.meta.uid,  'commited'