diff --git a/source/app/models/main.py b/source/app/models/main.py index 6b35fc9..08dbff5 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -10967,6 +10967,65 @@ def _import_clients(rfc, path): return +def _import_stock(rfc, path): + if not rfc: + msg = 'El RFC es requerido' + log.error(msg) + return + + if not path: + msg = 'El archivo CSV es necesario' + log.error(msg) + return + + args = util.get_con(rfc) + if not args: + return + + conectar(args) + log.info('Importando existencias...') + + data = utils.read_csv(path) + t = len(data) + ok = 0 + for i, row in enumerate(data): + msg = f'\tImportando existencia {i+1} de {t}' + log.info(msg) + + cant = Decimal(row['cantidad']) + if cant <= 0: + continue + + storage = int(row['almacen']) + + product = Productos.get(Productos.clave==row['clave']) + if not product.inventario: + msg = 'Este producto no lleva inventario.' + log.debug(msg) + continue + + values = dict( + storage = storage, + product = product, + cant = cant, + ) + obj = InventoryEntries.create(**values) + WareHouseProduct.update_exists(values) + + new_cant = product.existencia + cant + q = (Productos + .update(existencia=Productos.existencia + cant) + .where(Productos.id==product.id) + ) + q.execute() + + desconectar() + msg = f'Total de productos: {t}' + log.info(msg) + log.info('Proceso terminado correctamente...') + return + + def _process_command_line_arguments(): parser = argparse.ArgumentParser( description='Empresa Libre') @@ -10992,6 +11051,9 @@ def _process_command_line_arguments(): action='store_true', default=False, required=False) parser.add_argument('-ic', '--import-clients', dest='import_clients', action='store_true', default=False, required=False) + parser.add_argument('-is', '--import-stock', dest='import_stock', + action='store_true', default=False, required=False) + parser.add_argument('-mc' , '--migrate-cert', dest='migrate_cert', action='store_true', default=False, required=False) @@ -11045,6 +11107,10 @@ def main(args): _import_clients(args.rfc, args.file) return + if args.import_stock: + _import_stock(args.rfc, args.file) + return + return