Agregar método para importar existencias

This commit is contained in:
El Mau 2021-11-21 22:26:34 -06:00
parent 219f7c6712
commit 54f2a574a3
1 changed files with 66 additions and 0 deletions

View File

@ -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