kassa work correct

This commit is contained in:
Gitea
2022-01-20 17:56:38 +09:00
parent 831bb26887
commit 11d3d2644f
7 changed files with 57 additions and 30 deletions

View File

@ -39,7 +39,9 @@ class Atol:
def set_sell(self, reciept, is_refund):
func = '/sell' if is_refund == 0 else '/sell_refund'
print(reciept)
s = self.get_request('post', self.group_id+func, reciept)
print(s)
return s
def get_reciepts(self, uuid):

View File

@ -1,7 +1,6 @@
from ast import Dict
from sqlalchemy.orm import Session
import schemas
import models
import kassa.schemas as schemas
import kassa.models as models
def create_doc(db: Session, doc: schemas.Doc, external_id: str = None):

View File

@ -1,8 +1,8 @@
from fastapi import APIRouter, Depends
import databases
import cruds.doc as doc
import schemas
import models
import kassa.databases as databases
import kassa.cruds.doc as doc
import kassa.schemas as schemas
import kassa.models as models
models.Base.metadata.create_all(databases.engine)
router = APIRouter()

View File

@ -1,7 +1,7 @@
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 databases import Base
from kassa.databases import Base
class Payment(Base):
@ -56,15 +56,15 @@ class Payload(Base):
__tablename__ = 'payloads'
external_id = Column('external_id', String(128), primary_key=True)
fiscal_receipt_number = Column('fiscal_receipt_number', Integer)
shift_number = Column('shift_number', Integer)
fiscal_receipt_number = Column('fiscal_receipt_number', BigInteger)
shift_number = Column('shift_number', BigInteger)
receipt_datetime = Column('receipt_datetime', String(length=128))
total = Column('total', Numeric(12, 2))
fn_number = Column('fn_number', String(length=128))
ecr_registration_number = Column(
'ecr_registration_number', String(length=128))
fiscal_document_number = Column('fiscal_document_number', Integer)
fiscal_document_attribute = Column('fiscal_document_attribute', Integer)
fiscal_document_number = Column('fiscal_document_number', BigInteger)
fiscal_document_attribute = Column('fiscal_document_attribute', BigInteger)
fns_site = Column('fns_site', String(length=128))

View File

@ -1,3 +1,4 @@
from lib2to3.pgen2 import token
from time import sleep
from typing import Dict, List, Tuple
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.sql.sqltypes import DateTime
from sqlalchemy import desc, cast, case, func
import schemas
import models
import kassa.schemas as schemas
import kassa.models as models
from kassa.databases import SessionLocal
from kassa.atol import Atol
import datetime
Base = declarative_base()
@ -163,7 +166,8 @@ def get_payments(data: List):
def get_token(db: Session, db_dict: DBEngine):
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):
aa = engine.get_table("Atol")
atol.pop("is_taken", None)
a = aa.insert().values(atol)
db.execute(a)
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):
from databases import SessionLocal
from atol import Atol
atol_model = Atol
def add_doc(sell: schemas.Sell, is_refund, token):
atol_model = Atol(token)
session = SessionLocal()
a = Atol.set_sell(atol_model, sell, is_refund)
check = models.Atol(**a)
a = atol_model.set_sell(clear_dict(sell.dict()), is_refund)
check = models.Atol(schemas.AtolSell(**a))
check.external_id = sell.external_id
session.add(check)
session.commit()
session.close()
def get_payment():
def get_main_payment():
server = 'Sanctuary'
user = 'sa'
password = '159357'
@ -305,15 +324,15 @@ def get_payment():
}
add_atol(session, db, atol)
update_payment_details(session, db, payment)
return sell, payment.get("is_refund")
return False, False
return sell, payment.get("is_refund"), get_token(session, db_dicts)
return False, False, False
if __name__ == "__main__":
def main():
while True:
payment, is_refund = get_payment()
payment, is_refund, token = get_main_payment()
if payment == False:
break
sleep(1)
add_doc(sell=payment, is_refund=is_refund)
add_doc(sell=payment, is_refund=is_refund, token = token)
break

View File

@ -207,6 +207,13 @@ class Sell(BaseModel):
class Config:
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):
is_refund: bool

View File

@ -41,4 +41,4 @@ app.include_router(
)
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=5000)
uvicorn.run("main:app", host="0.0.0.0", port=4321)