kassa work correct
This commit is contained in:
@ -39,7 +39,9 @@ class Atol:
|
|||||||
|
|
||||||
def set_sell(self, reciept, is_refund):
|
def set_sell(self, reciept, is_refund):
|
||||||
func = '/sell' if is_refund == 0 else '/sell_refund'
|
func = '/sell' if is_refund == 0 else '/sell_refund'
|
||||||
|
print(reciept)
|
||||||
s = self.get_request('post', self.group_id+func, reciept)
|
s = self.get_request('post', self.group_id+func, reciept)
|
||||||
|
print(s)
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def get_reciepts(self, uuid):
|
def get_reciepts(self, uuid):
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
from ast import Dict
|
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
import schemas
|
import kassa.schemas as schemas
|
||||||
import models
|
import kassa.models as models
|
||||||
|
|
||||||
|
|
||||||
def create_doc(db: Session, doc: schemas.Doc, external_id: str = None):
|
def create_doc(db: Session, doc: schemas.Doc, external_id: str = None):
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
import databases
|
import kassa.databases as databases
|
||||||
import cruds.doc as doc
|
import kassa.cruds.doc as doc
|
||||||
import schemas
|
import kassa.schemas as schemas
|
||||||
import models
|
import kassa.models as models
|
||||||
|
|
||||||
models.Base.metadata.create_all(databases.engine)
|
models.Base.metadata.create_all(databases.engine)
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from sqlalchemy.sql.schema import ForeignKey
|
from sqlalchemy.sql.schema import ForeignKey
|
||||||
from sqlalchemy import Column, Integer, String, Numeric, DateTime, Boolean
|
from sqlalchemy import Column, Integer, String, Numeric, DateTime, Boolean, BigInteger
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from databases import Base
|
from kassa.databases import Base
|
||||||
|
|
||||||
|
|
||||||
class Payment(Base):
|
class Payment(Base):
|
||||||
@ -56,15 +56,15 @@ class Payload(Base):
|
|||||||
__tablename__ = 'payloads'
|
__tablename__ = 'payloads'
|
||||||
|
|
||||||
external_id = Column('external_id', String(128), primary_key=True)
|
external_id = Column('external_id', String(128), primary_key=True)
|
||||||
fiscal_receipt_number = Column('fiscal_receipt_number', Integer)
|
fiscal_receipt_number = Column('fiscal_receipt_number', BigInteger)
|
||||||
shift_number = Column('shift_number', Integer)
|
shift_number = Column('shift_number', BigInteger)
|
||||||
receipt_datetime = Column('receipt_datetime', String(length=128))
|
receipt_datetime = Column('receipt_datetime', String(length=128))
|
||||||
total = Column('total', Numeric(12, 2))
|
total = Column('total', Numeric(12, 2))
|
||||||
fn_number = Column('fn_number', String(length=128))
|
fn_number = Column('fn_number', String(length=128))
|
||||||
ecr_registration_number = Column(
|
ecr_registration_number = Column(
|
||||||
'ecr_registration_number', String(length=128))
|
'ecr_registration_number', String(length=128))
|
||||||
fiscal_document_number = Column('fiscal_document_number', Integer)
|
fiscal_document_number = Column('fiscal_document_number', BigInteger)
|
||||||
fiscal_document_attribute = Column('fiscal_document_attribute', Integer)
|
fiscal_document_attribute = Column('fiscal_document_attribute', BigInteger)
|
||||||
fns_site = Column('fns_site', String(length=128))
|
fns_site = Column('fns_site', String(length=128))
|
||||||
|
|
||||||
|
|
||||||
|
51
kassa/new.py
51
kassa/new.py
@ -1,3 +1,4 @@
|
|||||||
|
from lib2to3.pgen2 import token
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import Dict, List, Tuple
|
from typing import Dict, List, Tuple
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
@ -7,8 +8,10 @@ from sqlalchemy.orm import query, sessionmaker
|
|||||||
from sqlalchemy.types import BigInteger, Integer, String, Numeric, Boolean, DateTime
|
from sqlalchemy.types import BigInteger, Integer, String, Numeric, Boolean, DateTime
|
||||||
from sqlalchemy.sql.sqltypes import DateTime
|
from sqlalchemy.sql.sqltypes import DateTime
|
||||||
from sqlalchemy import desc, cast, case, func
|
from sqlalchemy import desc, cast, case, func
|
||||||
import schemas
|
import kassa.schemas as schemas
|
||||||
import models
|
import kassa.models as models
|
||||||
|
from kassa.databases import SessionLocal
|
||||||
|
from kassa.atol import Atol
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
@ -163,7 +166,8 @@ def get_payments(data: List):
|
|||||||
|
|
||||||
def get_token(db: Session, db_dict: DBEngine):
|
def get_token(db: Session, db_dict: DBEngine):
|
||||||
token_dict = db_dict.get_table("vAtolToken")
|
token_dict = db_dict.get_table("vAtolToken")
|
||||||
return token_dict.get("token")
|
rows = db.query(token_dict).first()
|
||||||
|
return dict(rows).get("token")
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -265,24 +269,39 @@ def get_vat(vat: str):
|
|||||||
|
|
||||||
def add_atol(db: Session, engine: DBEngine, atol: Dict):
|
def add_atol(db: Session, engine: DBEngine, atol: Dict):
|
||||||
aa = engine.get_table("Atol")
|
aa = engine.get_table("Atol")
|
||||||
|
atol.pop("is_taken", None)
|
||||||
a = aa.insert().values(atol)
|
a = aa.insert().values(atol)
|
||||||
db.execute(a)
|
db.execute(a)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
def clear_dict(d):
|
||||||
|
if d is None:
|
||||||
|
return None
|
||||||
|
elif isinstance(d, list):
|
||||||
|
return list(filter(lambda x: x is not None, map(clear_dict, d)))
|
||||||
|
elif not isinstance(d, dict):
|
||||||
|
return d
|
||||||
|
else:
|
||||||
|
r = dict(
|
||||||
|
filter(lambda x: x[1] is not None,
|
||||||
|
map(lambda x: (x[0], clear_dict(x[1])),
|
||||||
|
d.items())))
|
||||||
|
if not bool(r):
|
||||||
|
return None
|
||||||
|
return r
|
||||||
|
|
||||||
def add_doc(sell: schemas.Sell, is_refund):
|
def add_doc(sell: schemas.Sell, is_refund, token):
|
||||||
from databases import SessionLocal
|
|
||||||
from atol import Atol
|
atol_model = Atol(token)
|
||||||
atol_model = Atol
|
|
||||||
session = SessionLocal()
|
session = SessionLocal()
|
||||||
a = Atol.set_sell(atol_model, sell, is_refund)
|
a = atol_model.set_sell(clear_dict(sell.dict()), is_refund)
|
||||||
check = models.Atol(**a)
|
check = models.Atol(schemas.AtolSell(**a))
|
||||||
|
check.external_id = sell.external_id
|
||||||
session.add(check)
|
session.add(check)
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
|
||||||
|
|
||||||
|
|
||||||
def get_payment():
|
def get_main_payment():
|
||||||
server = 'Sanctuary'
|
server = 'Sanctuary'
|
||||||
user = 'sa'
|
user = 'sa'
|
||||||
password = '159357'
|
password = '159357'
|
||||||
@ -305,15 +324,15 @@ def get_payment():
|
|||||||
}
|
}
|
||||||
add_atol(session, db, atol)
|
add_atol(session, db, atol)
|
||||||
update_payment_details(session, db, payment)
|
update_payment_details(session, db, payment)
|
||||||
return sell, payment.get("is_refund")
|
return sell, payment.get("is_refund"), get_token(session, db_dicts)
|
||||||
return False, False
|
return False, False, False
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def main():
|
||||||
while True:
|
while True:
|
||||||
payment, is_refund = get_payment()
|
payment, is_refund, token = get_main_payment()
|
||||||
if payment == False:
|
if payment == False:
|
||||||
break
|
break
|
||||||
sleep(1)
|
sleep(1)
|
||||||
add_doc(sell=payment, is_refund=is_refund)
|
add_doc(sell=payment, is_refund=is_refund, token = token)
|
||||||
break
|
break
|
||||||
|
@ -207,6 +207,13 @@ class Sell(BaseModel):
|
|||||||
class Config:
|
class Config:
|
||||||
arbitrary_types_allowed = True
|
arbitrary_types_allowed = True
|
||||||
|
|
||||||
|
class AtolSell(BaseModel):
|
||||||
|
uuid: str
|
||||||
|
timestamp: str
|
||||||
|
status: Optional[str] = None
|
||||||
|
error: Error = None
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
class SellCreate(Sell):
|
class SellCreate(Sell):
|
||||||
is_refund: bool
|
is_refund: bool
|
||||||
|
Reference in New Issue
Block a user