pjmakey2

Clase Python

Jan 22nd, 2014
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.06 KB | None | 0 0
  1.  
  2.  
  3. __author__ = 'pedroleguizamon'
  4. __doc__ = """
  5.    Clases que manejan los procesos de retroalimentacion de datos entre el clarion y la aplicacion web.
  6.    Con esto se adquiere mas modernidad y agilizacion en los procesos que conllevan el movimiento de mercaderia
  7.    de bodegas
  8.    Ya no habria problemas de facturas mal impresas, power packs incompletos.
  9.  
  10.    Por otro lado se asientan las bases para la administracion de los almacenajes desde esta aplicacion
  11.    """
  12.  
  13. import os, csv
  14. from warehouse_man.models import Pallets
  15. import datetime
  16.  
  17. class WsClarionBridge(object):
  18.     def update_pallets(self, **kwargs):
  19.         """
  20.        Actualizacion del estado de los pallets
  21.  
  22.        @param:
  23.          arch = El archivo que contiene los datos de los pallets
  24.        """
  25.  
  26.         arch = kwargs.get('arch')
  27.  
  28.         response = {}
  29.  
  30.         if not os.path.isfile(arch):
  31.             response.update({'error':
  32.                                  ['NO SE ENCUENTRA EL ARCHIVO %s' % arch]})
  33.             return response
  34.  
  35.         response.update({'exitos':{
  36.                 'pall_actuali': 0,
  37.                 'pall_creados': 0
  38.                 }
  39.         })
  40.  
  41.         with open(arch, 'rb') as csvpallets:
  42.             lineas = csv.reader(csvpallets, delimiter='|', quotechar='"')
  43.             for li in lineas[1:]:
  44.                 PAL_NUMERO, PAL_ESTADO, \
  45.                 PAL_COMPRA_NUMERO, PAL_CAJAS_X_PALLET, \
  46.                 PAL_UNIDADES_X_PALLET, PAL_UNIDADES_AVERIADAS, \
  47.                 PAL_LOTE, PAL_PROFORMA, \
  48.                 PAL_FECHA_CREACION, PAL_DIAS_DE_CREACION, \
  49.                 PAL_FECHA_VENCIMIENTO, PAL_DIAS_DE_VENCIMIENTO, \
  50.                 PAL_PARA_VENTA, PAL_UBICACION_BODEGA, \
  51.                 PAL_UBICACION_AREA, PAL_UBICACION_CELDA_ALTO, \
  52.                 PAL_UBICACION_CELDA_ANCHO, PAL_UBICACION_CELDA_PROFUNIDAD, \
  53.                 ACO_CODIGO_ARTICULO, ACO_DESCRIPCION, \
  54.                 DEF_CAJAS_X_PALLET, DEF_UNIDADES_X_CAJA, \
  55.                 DEF_MULTIPLO_VENTA, DEF_VOLUMEN_X_CAJA, \
  56.                 DEF_PESO_X_CAJA, DEF_STAT_FACTOR, \
  57.                 DEF_UNIDADES_ANALISIS, DEF_COSTO_PROMEDIO, \
  58.                 DEF_IVA, FABRICANTE, \
  59.                 GRUPO_FABRICANTE, ACO_FAMILIA_CODIGO, \
  60.                 ACO_FAMILIA, ACO_LINEA, \
  61.                 ACO_GRUPO, PROV_FAMILIA, \
  62.                 PROV_LINEA, PROV_GRUPO, \
  63.                 PROV_CODIGO_ARTICULO, PROV_DESCRIPCION, \
  64.                 SEGMENTO, MARCA, \
  65.                 MEDIDA, CONTENIDO, \
  66.                 EMPAQUE, GRUPO_EMPAQUE, \
  67.                 ESTRUCTURA, PERFORMANCE, \
  68.                 OTROS, CODIGO_BARRAS, \
  69.                 FECHA_PROCESO, HORA_INICIO_PROCESO, \
  70.                 HORA_ACTUALIZACION, VENCIMIENTO  = li
  71.  
  72.                 if PAL_UBICACION_BODEGA == '27':
  73.                     BODEGA = 'PICKING'
  74.  
  75.                 if PAL_UBICACION_BODEGA == '17':
  76.                     BODEGA = 'PALLET'
  77.  
  78.                 if PAL_PARA_VENTA.startwith('APTO'):
  79.                     COMPLETO = True
  80.                 else:
  81.                     continue
  82.  
  83.                 ESTADO = 'DISPONIBLE'
  84.  
  85.                 updated_values= {
  86.                         'articulo_cod': ACO_CODIGO_ARTICULO,
  87.                         # 'articulo_cod_nuevo':
  88.                         'articulo_descripcion': ACO_DESCRIPCION,
  89.                         'articulo_lote': PAL_LOTE,
  90.                         'articulo_caja_peso': DEF_PESO_X_CAJA,
  91.                         'articulo_cajas': DEF_CAJAS_X_PALLET,
  92.                         'articulo_unidades': DEF_UNIDADES_X_CAJA,
  93.                         'articulo_codigo_barra_unidad': CODIGO_BARRAS,
  94.                         'articulo_codigo_barra_caja': CODIGO_BARRAS,
  95.                         'articulo_fecha_vencimiento': PAL_FECHA_VENCIMIENTO,
  96.                         'pall_articulo_cajas': PAL_CAJAS_X_PALLET,
  97.                         'pall_articulo_unidades': PAL_UNIDADES_X_PALLET,
  98.                         'pall_numero': PAL_NUMERO,
  99.                         'pall_orden_compra': PAL_COMPRA_NUMERO,
  100.                         'pall_proforma': PAL_PROFORMA,
  101.                         'bodega_cod': PAL_UBICACION_BODEGA,
  102.                         'bodega': BODEGA,
  103.                         'bodega_area_cod': PAL_UBICACION_AREA,
  104.                         'pall_completo_05': COMPLETO,
  105.                         'pall_averiados_06': False,
  106.                         'estado': ESTADO,
  107.                         'baja_040': False
  108.                     }
  109.                 obj = Pallets.objects.filter(pall_numero=PAL_NUMERO).update(**updated_values)
  110.                 if obj == 0:
  111.                     updated_values.update({
  112.                         'cargado_010': True,
  113.                         'cargado_010_por': 'AUTOMATICO',
  114.                         'cargado_010_fecha': datetime.date.today(),
  115.                         'cargado_010_hora': datetime.datetime.now()
  116.                     })
  117.                     Pallets.objects.create(**updated_values)
  118.                     response['exitos']['pall_creados'] += 1
  119.                 else:
  120.                     response['exitos']['pall_actuali'] += 1
  121.  
  122.         return response
Advertisement
Add Comment
Please, Sign In to add comment