add FastAPI

This commit is contained in:
2025-01-25 15:53:37 -03:00
commit b73d27de57
49 changed files with 3521 additions and 0 deletions

109
service/order_service.py Normal file
View File

@@ -0,0 +1,109 @@
from datetime import datetime
from sqlalchemy.orm import sessionmaker
from db.helpers import get_engine
from db.models import Order, OrderStatus, OrderProductsSold # , ProductsSold
from service.helper import parse_date, get_paged_data
class OrderService:
session = None
access_token = None
limiter = None
def __init__(self, access_token, limiter):
self.access_token = access_token
Session = sessionmaker(bind=get_engine())
self.session = Session()
self.limiter = limiter
def save_all_orders(self):
params = {
'access_token': self.access_token
}
json_orders = get_paged_data('orders', 'Orders', self.limiter, max_pages=None, params=params)
self.save_orders(json_orders)
def parse_order(self, json_order):
return Order(
id=int(json_order['id']),
status=json_order['status'],
date=parse_date(json_order['date']),
customer_id=int(json_order['customer_id']),
partial_total=float(json_order['partial_total']),
taxes=float(json_order['taxes']),
discount=float(json_order['discount']),
point_sale=json_order['point_sale'],
shipment=json_order['shipment'],
shipment_value=float(json_order['shipment_value']),
shipment_date=parse_date(json_order['shipment_date']),
store_note=json_order['store_note'],
discount_coupon=json_order['discount_coupon'],
payment_method_rate=float(json_order['payment_method_rate']),
value_1=float(json_order['value_1']),
payment_form=json_order['payment_form'],
sending_code=json_order['sending_code'],
session_id=json_order['session_id'],
total=float(json_order['total']),
payment_date=parse_date(json_order['payment_date']),
access_code=json_order['access_code'],
progressive_discount=float(json_order['progressive_discount']),
shipping_progressive_discount=float(json_order['shipping_progressive_discount']),
shipment_integrator=json_order['shipment_integrator'],
modified=datetime.strptime(json_order['modified'], '%Y-%m-%d %H:%M:%S'),
printed=bool(json_order['printed']),
interest=float(json_order['interest']),
cart_additional_values_discount=float(json_order['cart_additional_values_discount']),
cart_additional_values_increase=float(json_order['cart_additional_values_increase']),
id_quotation=json_order['id_quotation'],
estimated_delivery_date=parse_date(json_order['estimated_delivery_date']),
external_code=json_order['external_code'],
tracking_url=json_order['tracking_url'],
has_payment=bool(int(json_order['has_payment'])),
has_shipment=bool(int(json_order['has_shipment'])),
has_invoice=bool(int(json_order['has_invoice'])),
total_comission_user=float(json_order['total_comission_user']),
total_comission=float(json_order['total_comission']),
is_traceable=bool(json_order['is_traceable']),
order_status_id=int(json_order['OrderStatus']['id'])
)
def parse_order_status(self, json_order_status):
return OrderStatus(
id=int(json_order_status['id']),
default=bool(int(json_order_status['default'])),
type=json_order_status['type'],
show_backoffice=bool(int(json_order_status['show_backoffice'])),
allow_edit_order=bool(int(json_order_status['allow_edit_order'])),
status=json_order_status['status'],
description=json_order_status['description'],
background=json_order_status['background']
)
def parse_order_products_sold(self, json_order_ps, order_id):
return OrderProductsSold(
order_id=order_id,
products_sold_id=json_order_ps['id']
)
def save_orders(self, orders):
for json_order in orders:
json_order = json_order['Order']
order = self.parse_order(json_order)
if 'OrderStatus' in json_order:
json_order_status = json_order['OrderStatus']
order_status = self.parse_order_status(json_order_status)
self.session.merge(order_status)
if 'ProductsSold' in json_order:
for json_ps in json_order['ProductsSold']:
order_products_sold = self.parse_order_products_sold(json_ps, order.id)
self.session.merge(order_products_sold)
self.session.merge(order)
self.session.commit()