CARGA
CARGA
This commit is contained in:
0
servicios/__init__.py
Normal file
0
servicios/__init__.py
Normal file
BIN
servicios/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/__init__.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/__init__.cpython-39.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/admin.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/admin.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/admin.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/admin.cpython-39.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/apps.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/apps.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/apps.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/apps.cpython-39.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/forms.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/forms.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/forms.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/forms.cpython-39.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/models.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/models.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/models.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/models.cpython-39.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/views.cpython-310.pyc
Normal file
BIN
servicios/__pycache__/views.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/__pycache__/views.cpython-39.pyc
Normal file
BIN
servicios/__pycache__/views.cpython-39.pyc
Normal file
Binary file not shown.
9
servicios/admin.py
Normal file
9
servicios/admin.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from django.contrib import admin
|
||||
from .models import tiposervicio, falla, ordenservicio, serviciorealizado, accesorios
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(tiposervicio)
|
||||
admin.site.register(falla)
|
||||
admin.site.register(ordenservicio)
|
||||
admin.site.register(serviciorealizado)
|
||||
admin.site.register(accesorios)
|
||||
6
servicios/apps.py
Normal file
6
servicios/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ServiciosConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'servicios'
|
||||
123
servicios/forms.py
Normal file
123
servicios/forms.py
Normal file
@@ -0,0 +1,123 @@
|
||||
from django import forms
|
||||
from .models import ordenservicio, serviciorealizado, accesorios, refacciones, preventivo
|
||||
|
||||
|
||||
|
||||
class Formordenservicio(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(Formordenservicio, self).__init__(*args, **kwargs)
|
||||
self.fields['horas_ib1'].widget.attrs['require'] = True
|
||||
self.fields['id_ib1'].widget.attrs['require'] = True
|
||||
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('folio', 'turno', 'reporta', 'ib1', 'ib2', 'orden_n_control',
|
||||
'n_reporte', 'tipo_servicio', 'origen_falla', 'falla_detectada', 'materiales',
|
||||
'articulos', 'equipos', 'patrones', 'herramienta', 'estatus', 'no_concluido',
|
||||
'externo_empresa', 'externo_orden', 'externo_servicio', 'horas_ib1', 'id_ib1',
|
||||
'horas_ib2', 'id_ib2')
|
||||
|
||||
|
||||
class FormordenservicioEnv(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('reporta', 'ib1', 'ib2', 'n_reporte', 'origen_falla', 'tipo_servicio',
|
||||
'falla_detectada', 'materiales', 'articulos', 'equipos', 'patrones', 'herramienta',
|
||||
'estatus', 'no_concluido', 'externo_empresa', 'externo_orden', 'externo_servicio',
|
||||
'horas_ib1', 'id_ib1', 'horas_ib2', 'id_ib2', 'firma_ib1', 'firma_ib2')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('reporta', 'ib1', 'ib2', 'origen_falla', 'tipo_servicio', 'falla_detectada',
|
||||
'materiales', 'articulos', 'equipos', 'patrones', 'herramienta', 'estatus', 'no_concluido',
|
||||
'externo_empresa', 'externo_orden', 'externo_servicio', 'horas_ib1', 'id_ib1', 'horas_ib2',
|
||||
'id_ib2', 'firma_ib1', 'firma_ib2')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit1(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('ib2',)
|
||||
|
||||
|
||||
class FormordenservicioEnvbit2(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('origen_falla', 'tipo_servicio')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit3(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('materiales', 'articulos', 'equipos', 'patrones', 'herramienta')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit4(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('estatus', 'no_concluido')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit5(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('externo_empresa', 'externo_orden', 'externo_servicio')
|
||||
|
||||
|
||||
class FormordenservicioEnvbit6(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ordenservicio
|
||||
fields = ('id_ib1', 'horas_ib1', 'id_ib2', 'horas_ib2')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#############################################################################
|
||||
|
||||
class Formserviciorealizado(forms.ModelForm):
|
||||
class Meta:
|
||||
model = serviciorealizado
|
||||
fields = ('folio', 'ser_s_n_control', 'ib', 'descripcion', 'control_bit')
|
||||
|
||||
|
||||
class FormserviciorealizadoEnv(forms.ModelForm):
|
||||
class Meta:
|
||||
model = serviciorealizado
|
||||
fields = ('ib', 'descripcion')
|
||||
|
||||
|
||||
class Formaccesorios(forms.ModelForm):
|
||||
class Meta:
|
||||
model = accesorios
|
||||
fields = ('folio', 'ser_a_n_control', 'cantidad', 'n_parte', 'descripcion', 'control_bit')
|
||||
|
||||
|
||||
class FormaccesoriosEnv(forms.ModelForm):
|
||||
class Meta:
|
||||
model = accesorios
|
||||
fields = ('cantidad', 'n_parte', 'descripcion')
|
||||
|
||||
|
||||
class Formrefacciones(forms.ModelForm):
|
||||
class Meta:
|
||||
model = refacciones
|
||||
fields = ('referencia', 'n_reporte', 'cantidad')
|
||||
|
||||
|
||||
|
||||
############################ PREVENTIVO ######################################
|
||||
|
||||
|
||||
class Formpreventivo(forms.ModelForm):
|
||||
class Meta:
|
||||
model = preventivo
|
||||
fields = ('n_control', 'usuario', 'notas', 'fecha_start', 'fecha_end', 'estatus')
|
||||
|
||||
|
||||
class FormpreventivoEnv(forms.ModelForm):
|
||||
class Meta:
|
||||
model = preventivo
|
||||
fields = ('n_control', 'usuario', 'notas', 'estatus')
|
||||
116
servicios/migrations/0001_initial.py
Normal file
116
servicios/migrations/0001_initial.py
Normal file
@@ -0,0 +1,116 @@
|
||||
# Generated by Django 3.2.7 on 2021-10-11 22:30
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import tinymce.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='accesorios',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('folio', models.IntegerField(verbose_name='Folio')),
|
||||
('ser_a_n_control', models.IntegerField(verbose_name='No Control')),
|
||||
('cantidad', models.IntegerField(verbose_name='Cantidad')),
|
||||
('n_parte', models.CharField(max_length=250, verbose_name='Número de Parte')),
|
||||
('descripcion', models.CharField(max_length=250, verbose_name='Descripción')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Accesorios de Ordenes',
|
||||
'verbose_name_plural': 'Accesorios de Ordenes',
|
||||
'ordering': ['-folio'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='falla',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nombre', models.CharField(max_length=250, unique=True, verbose_name='Nombre')),
|
||||
('otra', models.CharField(max_length=250, verbose_name='Especificar solo si selecciona: otra')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Origen Falla',
|
||||
'verbose_name_plural': 'Origen Falla',
|
||||
'ordering': ['nombre'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='tiposervicio',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nombre', models.CharField(max_length=250, unique=True, verbose_name='Nombre')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Tipo de Servicio',
|
||||
'verbose_name_plural': 'Tipos de Servicios',
|
||||
'ordering': ['nombre'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='serviciorealizado',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('folio', models.IntegerField(verbose_name='Folio')),
|
||||
('ser_s_n_control', models.IntegerField(verbose_name='No Control')),
|
||||
('fecha', models.DateField(auto_now_add=True, verbose_name='Fecha')),
|
||||
('descripcion', tinymce.models.HTMLField(verbose_name='Descripción del Servicio')),
|
||||
('ib', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='IB')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Servicios de las ordenes',
|
||||
'verbose_name_plural': 'Servicios de las ordenes',
|
||||
'ordering': ['-folio'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ordenservicio',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('folio', models.IntegerField(unique=True, verbose_name='Folio')),
|
||||
('fecha', models.DateField(auto_now_add=True, verbose_name='Fecha')),
|
||||
('turno', models.CharField(max_length=50, verbose_name='Turno Hora')),
|
||||
('reporta', models.CharField(max_length=250, verbose_name='Reporta')),
|
||||
('orden_n_control', models.IntegerField(verbose_name='No Control')),
|
||||
('n_reporte', models.CharField(max_length=250, verbose_name='NUMERO DE REPORTE')),
|
||||
('falla_detectada', models.CharField(max_length=250, verbose_name='Falla Detectada')),
|
||||
('materiales', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Materiales (electronico/Solvente/Adhesivo/Limpieza/Lubricantes/Surgistein)')),
|
||||
('articulos', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Articulos de limpieza y protección (Gasas/Guantes de latex/cubrebocas ) ')),
|
||||
('equipos', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Equipos de Medicion (Multimetro/Tacometro/Termometro/Manometro/Corriente de Fuga)')),
|
||||
('patrones', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Patrones para validacion ( Probador de descargas/Simulador de ECG,RESP,SP02, GASTO CARDIACO/Marco de Pesas)')),
|
||||
('herramienta', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Herramienta (General, Electrica, Neumatica)')),
|
||||
('estatus', models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='NO', max_length=11, verbose_name='Estatus CONCLUIDO?')),
|
||||
('no_concluido', tinymce.models.HTMLField(blank=True, null=True, verbose_name='Especificar si no es Concluido:')),
|
||||
('externo_empresa', models.CharField(blank=True, max_length=250, null=True, verbose_name='Nombre de la Empresa')),
|
||||
('externo_orden', models.CharField(blank=True, max_length=250, null=True, verbose_name='No. de la Orden de Servicio')),
|
||||
('externo_servicio', models.CharField(choices=[('Ninguno', 'Ninguno'), ('Contrato', 'Contrato'), ('Subrrogado', 'Subrrogado'), ('Evento', 'Evento')], default='Ninguno', max_length=13, verbose_name='Tipo de Servicio')),
|
||||
('horas_ib1', models.IntegerField(blank=True, null=True, verbose_name='Horas Ingeniero IB1')),
|
||||
('horas_ib2', models.IntegerField(blank=True, null=True, verbose_name='Horas Ingeniero IB2')),
|
||||
('firma_area', models.CharField(blank=True, max_length=250, null=True, verbose_name='Nombre del Personal que Acepta')),
|
||||
('val_serv', models.CharField(choices=[('Excelente', 'Excelente'), ('Regular', 'Regular'), ('Malo', 'Malo')], default='Excelente', max_length=13, verbose_name='Valoracion de Servicio')),
|
||||
('observ_area', models.CharField(blank=True, max_length=250, null=True, verbose_name='OBSERVACIONES DE PERSONAL DEL AREA.')),
|
||||
('firma_ib1', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='FIRMA IB1')),
|
||||
('firma_ib2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='FIRMA IB2')),
|
||||
('ib1', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='IB1', to=settings.AUTH_USER_MODEL, verbose_name='Atiende IB1')),
|
||||
('ib2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='IB2', to=settings.AUTH_USER_MODEL, verbose_name='Atiende IB2')),
|
||||
('id_ib1', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='ID IB1')),
|
||||
('id_ib2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='ID IB2')),
|
||||
('origen_falla', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='servicios.falla', verbose_name='Origen de la Falla')),
|
||||
('tipo_servicio', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='servicios.tiposervicio', verbose_name='Tipo de Servicio')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ordenes de Servicio',
|
||||
'verbose_name_plural': 'Ordenes de Servicios',
|
||||
'ordering': ['-folio'],
|
||||
},
|
||||
),
|
||||
]
|
||||
18
servicios/migrations/0002_alter_falla_otra.py
Normal file
18
servicios/migrations/0002_alter_falla_otra.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.7 on 2021-10-11 22:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='falla',
|
||||
name='otra',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Especificar solo si selecciona: otra'),
|
||||
),
|
||||
]
|
||||
22
servicios/migrations/0003_auto_20211011_1736.py
Normal file
22
servicios/migrations/0003_auto_20211011_1736.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 3.2.7 on 2021-10-11 22:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0002_alter_falla_otra'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='falla',
|
||||
name='otra',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='ordenservicio',
|
||||
name='origen_falla_otra',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Especificar solo si selecciona: otra'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.8 on 2021-10-20 10:20
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0003_auto_20211011_1736'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='orden_n_control',
|
||||
field=models.IntegerField(verbose_name='No Control del Equipo'),
|
||||
),
|
||||
]
|
||||
23
servicios/migrations/0005_auto_20211103_2306.py
Normal file
23
servicios/migrations/0005_auto_20211103_2306.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.8 on 2021-11-04 05:06
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0004_alter_ordenservicio_orden_n_control'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='accesorios',
|
||||
name='control_bit',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Control Bitacora'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='serviciorealizado',
|
||||
name='control_bit',
|
||||
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='Control Bitacora'),
|
||||
),
|
||||
]
|
||||
18
servicios/migrations/0006_alter_serviciorealizado_folio.py
Normal file
18
servicios/migrations/0006_alter_serviciorealizado_folio.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.8 on 2021-11-05 09:45
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0005_auto_20211103_2306'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='serviciorealizado',
|
||||
name='folio',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='Folio'),
|
||||
),
|
||||
]
|
||||
17
servicios/migrations/0007_alter_serviciorealizado_options.py
Normal file
17
servicios/migrations/0007_alter_serviciorealizado_options.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.7 on 2021-11-05 21:26
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0006_alter_serviciorealizado_folio'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='serviciorealizado',
|
||||
options={'ordering': ['-id'], 'verbose_name': 'Servicios de las ordenes', 'verbose_name_plural': 'Servicios de las ordenes'},
|
||||
),
|
||||
]
|
||||
18
servicios/migrations/0008_alter_ordenservicio_val_serv.py
Normal file
18
servicios/migrations/0008_alter_ordenservicio_val_serv.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.8 on 2021-11-08 07:47
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0007_alter_serviciorealizado_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='val_serv',
|
||||
field=models.CharField(blank=True, choices=[('Excelente', 'Excelente'), ('Regular', 'Regular'), ('Malo', 'Malo')], default='Excelente', max_length=13, null=True, verbose_name='Valoracion de Servicio'),
|
||||
),
|
||||
]
|
||||
17
servicios/migrations/0009_alter_accesorios_options.py
Normal file
17
servicios/migrations/0009_alter_accesorios_options.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 3.2.8 on 2021-11-08 08:29
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0008_alter_ordenservicio_val_serv'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='accesorios',
|
||||
options={'ordering': ['-id'], 'verbose_name': 'Accesorios de Ordenes', 'verbose_name_plural': 'Accesorios de Ordenes'},
|
||||
),
|
||||
]
|
||||
28
servicios/migrations/0010_auto_20211108_0242.py
Normal file
28
servicios/migrations/0010_auto_20211108_0242.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.2.8 on 2021-11-08 08:42
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0009_alter_accesorios_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='accesorios',
|
||||
name='folio',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='Folio'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='accesorios',
|
||||
name='ser_a_n_control',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='No Control'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='serviciorealizado',
|
||||
name='ser_s_n_control',
|
||||
field=models.IntegerField(blank=True, null=True, verbose_name='No Control'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.0.2 on 2022-03-08 23:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('servicios', '0010_auto_20211108_0242'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='accesorios',
|
||||
name='n_reporte',
|
||||
field=models.CharField(default='', max_length=250, verbose_name='NUMERO DE REPORTE'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='serviciorealizado',
|
||||
name='n_reporte',
|
||||
field=models.CharField(default='', max_length=250, verbose_name='NUMERO DE REPORTE'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,80 @@
|
||||
# Generated by Django 4.0.2 on 2022-04-11 02:32
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('servicios', '0011_accesorios_n_reporte_serviciorealizado_n_reporte'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='accesorios',
|
||||
name='n_reporte',
|
||||
field=models.CharField(blank=True, default='', max_length=250, null=True, verbose_name='NUMERO DE REPORTE'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='estatus',
|
||||
field=models.CharField(choices=[('SI', 'SI'), ('NO', 'NO')], default='SI', max_length=11, verbose_name='Estatus CONCLUIDO?'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='firma_ib1',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='FIRMA IB1'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='horas_ib1',
|
||||
field=models.IntegerField(default=0, verbose_name='Horas Ingeniero IB1'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='ordenservicio',
|
||||
name='id_ib1',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='ID IB1'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='serviciorealizado',
|
||||
name='n_reporte',
|
||||
field=models.CharField(blank=True, default='', max_length=250, null=True, verbose_name='NUMERO DE REPORTE'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='refacciones',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('referencia', models.CharField(max_length=250, verbose_name='Referencia')),
|
||||
('n_reporte', models.CharField(blank=True, default='', max_length=250, null=True, verbose_name='No. de Reporte')),
|
||||
('cantidad', models.IntegerField(verbose_name='Cantidad')),
|
||||
('fecharegis', models.DateField(auto_now_add=True, null=True, verbose_name='Fecha')),
|
||||
('usuario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='USUARIO')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'refaccion',
|
||||
'verbose_name_plural': 'refacciones',
|
||||
'ordering': ['-id'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='preventivo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('n_control', models.IntegerField(verbose_name='No Control del Equipo')),
|
||||
('fecha_start', models.DateField(verbose_name='FECHA INICIO')),
|
||||
('fecha_end', models.DateField(verbose_name='FECHA TERMINO')),
|
||||
('notas', models.CharField(max_length=250, verbose_name='Notas')),
|
||||
('fecha_add', models.DateField(auto_now_add=True, null=True, verbose_name='Fecha de registro')),
|
||||
('estatus', models.CharField(choices=[('PENDIENTE', 'PENDIENTE'), ('REALIZADO', 'REALIZADO')], default='PENDIENTE', max_length=11, verbose_name='Estatus?')),
|
||||
('usuario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Realizara')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Mantenimiento',
|
||||
'verbose_name_plural': 'Mantenimientos',
|
||||
'ordering': ['-id'],
|
||||
},
|
||||
),
|
||||
]
|
||||
0
servicios/migrations/__init__.py
Normal file
0
servicios/migrations/__init__.py
Normal file
BIN
servicios/migrations/__pycache__/0001_initial.cpython-310.pyc
Normal file
BIN
servicios/migrations/__pycache__/0001_initial.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/migrations/__pycache__/0001_initial.cpython-39.pyc
Normal file
BIN
servicios/migrations/__pycache__/0001_initial.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
servicios/migrations/__pycache__/0007_area.cpython-39.pyc
Normal file
BIN
servicios/migrations/__pycache__/0007_area.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
servicios/migrations/__pycache__/0009_area_ib.cpython-39.pyc
Normal file
BIN
servicios/migrations/__pycache__/0009_area_ib.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
servicios/migrations/__pycache__/0016_preventivo.cpython-310.pyc
Normal file
BIN
servicios/migrations/__pycache__/0016_preventivo.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
servicios/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
servicios/migrations/__pycache__/__init__.cpython-39.pyc
Normal file
BIN
servicios/migrations/__pycache__/__init__.cpython-39.pyc
Normal file
Binary file not shown.
143
servicios/models.py
Normal file
143
servicios/models.py
Normal file
@@ -0,0 +1,143 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
import os
|
||||
from tinymce import models as tinymce_models
|
||||
from model_utils import Choices
|
||||
from inventario.models import invequipo
|
||||
from django.utils.timezone import now
|
||||
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class tiposervicio(models.Model):
|
||||
nombre = models.CharField(max_length=250, null=False, unique=True, verbose_name='Nombre')
|
||||
def __str__(self):
|
||||
return self.nombre
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Tipo de Servicio'
|
||||
verbose_name_plural = 'Tipos de Servicios'
|
||||
ordering = ['nombre']
|
||||
|
||||
|
||||
class falla(models.Model):
|
||||
nombre = models.CharField(max_length=250, null=False, unique=True, verbose_name='Nombre')
|
||||
def __str__(self):
|
||||
return self.nombre
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Origen Falla'
|
||||
verbose_name_plural = 'Origen Falla'
|
||||
ordering = ['nombre']
|
||||
|
||||
|
||||
class ordenservicio(models.Model):
|
||||
folio = models.IntegerField(unique=True, null=False, verbose_name='Folio')
|
||||
fecha = models.DateField(auto_now_add=True, verbose_name='Fecha')
|
||||
turno = models.CharField(max_length=50, null=False, verbose_name='Turno Hora')
|
||||
reporta = models.CharField(max_length=250, null=False, verbose_name='Reporta')
|
||||
ib1 = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False, related_name='IB1', verbose_name='Atiende IB1')
|
||||
ib2 = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='IB2', verbose_name='Atiende IB2')
|
||||
orden_n_control = models.IntegerField(null=False, blank=False, verbose_name='No Control del Equipo')
|
||||
n_reporte = models.CharField(max_length=250, null=False, blank=False, verbose_name='NUMERO DE REPORTE')
|
||||
tipo_servicio = models.ForeignKey(tiposervicio, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Tipo de Servicio')
|
||||
origen_falla = models.ForeignKey(falla, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Origen de la Falla')
|
||||
origen_falla_otra = models.CharField(max_length=250, null=True, blank=True, verbose_name='Especificar solo si selecciona: otra')
|
||||
falla_detectada = models.CharField(max_length=250, null=False, verbose_name='Falla Detectada')
|
||||
STATUS = Choices('SI', 'NO')
|
||||
materiales = models.CharField(choices=STATUS, default=STATUS.NO, max_length=11, verbose_name='Materiales (electronico/Solvente/Adhesivo/Limpieza/Lubricantes/Surgistein)')
|
||||
articulos = models.CharField(choices=STATUS, default=STATUS.NO, max_length=11, verbose_name='Articulos de limpieza y protección (Gasas/Guantes de latex/cubrebocas ) ')
|
||||
equipos = models.CharField(choices=STATUS, default=STATUS.NO, max_length=11, verbose_name='Equipos de Medicion (Multimetro/Tacometro/Termometro/Manometro/Corriente de Fuga)')
|
||||
patrones = models.CharField(choices=STATUS, default=STATUS.NO, max_length=11, verbose_name='Patrones para validacion ( Probador de descargas/Simulador de ECG,RESP,SP02, GASTO CARDIACO/Marco de Pesas)')
|
||||
herramienta = models.CharField(choices=STATUS, default=STATUS.NO, max_length=11, verbose_name='Herramienta (General, Electrica, Neumatica)')
|
||||
estatus = models.CharField(choices=STATUS, default=STATUS.SI, max_length=11, verbose_name='Estatus CONCLUIDO?')
|
||||
no_concluido = tinymce_models.HTMLField(null=True, blank=True, verbose_name='Especificar si no es Concluido:')
|
||||
externo_empresa = models.CharField(max_length=250, null=True, blank=True, verbose_name='Nombre de la Empresa')
|
||||
externo_orden = models.CharField(max_length=250, null=True, blank=True, verbose_name='No. de la Orden de Servicio')
|
||||
TIPOSERVICIO = Choices('Ninguno', 'Contrato', 'Subrrogado', 'Evento')
|
||||
externo_servicio = models.CharField(choices=TIPOSERVICIO, default=TIPOSERVICIO.Ninguno, max_length=13, verbose_name='Tipo de Servicio')
|
||||
horas_ib1 = models.IntegerField(null=False, blank=False, default=0, verbose_name='Horas Ingeniero IB1')
|
||||
id_ib1 = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False, related_name='+', verbose_name='ID IB1')
|
||||
horas_ib2 = models.IntegerField(null=True, blank=True, verbose_name='Horas Ingeniero IB2')
|
||||
id_ib2 = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='+', verbose_name='ID IB2')
|
||||
firma_ib1 = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False, related_name='+', verbose_name='FIRMA IB1')
|
||||
firma_ib2 = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='+', verbose_name='FIRMA IB2')
|
||||
firma_area = models.CharField(max_length=250, null=True, blank=True, verbose_name='Nombre del Personal que Acepta')
|
||||
VALSERV = Choices('Excelente', 'Regular', 'Malo')
|
||||
val_serv = models.CharField(choices=VALSERV, default=VALSERV.Excelente, max_length=13, null=True, blank=True, verbose_name='Valoracion de Servicio')
|
||||
observ_area = models.CharField(max_length=250, null=True, blank=True, verbose_name='OBSERVACIONES DE PERSONAL DEL AREA.')
|
||||
def __str__(self):
|
||||
return str(self.folio)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Ordenes de Servicio'
|
||||
verbose_name_plural = 'Ordenes de Servicios'
|
||||
ordering = ['-folio']
|
||||
|
||||
|
||||
class serviciorealizado(models.Model):
|
||||
folio = models.IntegerField(null=True, blank=True, verbose_name='Folio')
|
||||
ser_s_n_control = models.IntegerField(null=True, blank=True, verbose_name='No Control')
|
||||
ib = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False, verbose_name='IB')
|
||||
fecha = models.DateField(auto_now_add=True, verbose_name='Fecha')
|
||||
descripcion = tinymce_models.HTMLField(null=False, verbose_name='Descripción del Servicio')
|
||||
control_bit = models.CharField(max_length=250, null=True, blank=True, verbose_name='Control Bitacora')
|
||||
n_reporte = models.CharField(max_length=250, null=True, blank=True, default='', verbose_name='NUMERO DE REPORTE')
|
||||
def __str__(self):
|
||||
return str(self.folio)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Servicios de las ordenes'
|
||||
verbose_name_plural = 'Servicios de las ordenes'
|
||||
ordering = ['-id']
|
||||
|
||||
|
||||
class accesorios(models.Model):
|
||||
folio = models.IntegerField(null=True, blank=True, verbose_name='Folio')
|
||||
ser_a_n_control = models.IntegerField(null=True, blank=True, verbose_name='No Control')
|
||||
cantidad = models.IntegerField(verbose_name='Cantidad')
|
||||
n_parte = models.CharField(max_length=250, null=False, verbose_name='Número de Parte')
|
||||
descripcion = models.CharField(max_length=250, null=False, verbose_name='Descripción')
|
||||
control_bit = models.CharField(max_length=250, null=True, blank=True, verbose_name='Control Bitacora')
|
||||
n_reporte = models.CharField(max_length=250, null=True, blank=True, default='', verbose_name='NUMERO DE REPORTE')
|
||||
def __str__(self):
|
||||
return str(self.folio)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Accesorios de Ordenes'
|
||||
verbose_name_plural = 'Accesorios de Ordenes'
|
||||
ordering = ['-id']
|
||||
|
||||
|
||||
class refacciones(models.Model):
|
||||
referencia = models.CharField(max_length=250, null=False, verbose_name='Referencia')
|
||||
n_reporte = models.CharField(max_length=250, null=True, blank=True, default='', verbose_name='No. de Reporte')
|
||||
cantidad = models.IntegerField(verbose_name='Cantidad')
|
||||
fecharegis = models.DateField(auto_now_add=True, null=True, blank=True, verbose_name='Fecha')
|
||||
usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='+', verbose_name='USUARIO')
|
||||
def __str__(self):
|
||||
return str(self.n_reporte)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'refaccion'
|
||||
verbose_name_plural = 'refacciones'
|
||||
ordering = ['-id']
|
||||
|
||||
|
||||
|
||||
class preventivo(models.Model):
|
||||
STATUS = Choices('PENDIENTE', 'REALIZADO')
|
||||
n_control = models.IntegerField(null=False, blank=False, verbose_name='No Control del Equipo')
|
||||
fecha_start = models.DateField(verbose_name='FECHA INICIO')
|
||||
fecha_end = models.DateField(verbose_name='FECHA TERMINO')
|
||||
usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='+', verbose_name='Realizara')
|
||||
notas = models.CharField(max_length=250, null=False, verbose_name='Notas')
|
||||
fecha_add = models.DateField(auto_now_add=True, null=True, blank=True, verbose_name='Fecha de registro')
|
||||
estatus = models.CharField(choices=STATUS, default=STATUS.PENDIENTE, max_length=11, verbose_name='Estatus?')
|
||||
def __str__(self):
|
||||
return str(self.n_control)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Mantenimiento'
|
||||
verbose_name_plural = 'Mantenimientos'
|
||||
ordering = ['-id']
|
||||
3
servicios/tests.py
Normal file
3
servicios/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
597
servicios/views.py
Normal file
597
servicios/views.py
Normal file
@@ -0,0 +1,597 @@
|
||||
import os
|
||||
from django.conf import settings
|
||||
from django.template import Context
|
||||
from django.template.loader import get_template
|
||||
from xhtml2pdf import pisa
|
||||
from django.contrib.staticfiles import finders
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.models import User
|
||||
from django.http.response import HttpResponse
|
||||
from django.views import View
|
||||
from django.views.generic import ListView
|
||||
from datetime import datetime
|
||||
from .models import ordenservicio, serviciorealizado, accesorios, tiposervicio, falla, refacciones, preventivo
|
||||
from .forms import Formpreventivo, FormpreventivoEnv, Formordenservicio, FormordenservicioEnv, Formserviciorealizado, FormserviciorealizadoEnv, Formaccesorios, FormaccesoriosEnv, FormordenservicioEnvbit, FormordenservicioEnvbit1, FormordenservicioEnvbit2, FormordenservicioEnvbit3, FormordenservicioEnvbit4, FormordenservicioEnvbit5, FormordenservicioEnvbit6, Formrefacciones
|
||||
from servicios.models import serviciorealizado, accesorios
|
||||
from inventario.models import invequipo
|
||||
from pendientes.models import bitpendientes
|
||||
from bitacora.models import bitreporte
|
||||
from inventarioalmacen.models import pieza
|
||||
from openpyxl import Workbook
|
||||
import datetime
|
||||
from datetime import date
|
||||
|
||||
|
||||
|
||||
# Create your views here.
|
||||
def servicios(request):
|
||||
datos = ordenservicio.objects.all()
|
||||
equipo = invequipo.objects.all()
|
||||
servicios = serviciorealizado.objects.all()
|
||||
usuarios = User.objects.all()
|
||||
accesorio = accesorios.objects.all()
|
||||
return render(request, 'servicios.html', {"datos": datos, "servicios": servicios, "equipo": equipo, "usuarios": usuarios, "accesorio": accesorio})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_ordservicio(request):
|
||||
if request.method == "POST":
|
||||
form = Formordenservicio(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
folio = form.cleaned_data.get("folio")
|
||||
n_control = form.cleaned_data.get("orden_n_control")
|
||||
messages.success(request, f"La servicio con el {folio} se ha creado o actualizado correctamente")
|
||||
form = FormserviciorealizadoEnv()
|
||||
return render(request, "crear_servrealizado.html", {"form": form, "folio": folio, "n_control": n_control})
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
scan = ordenservicio.objects.latest('id')
|
||||
date = datetime.datetime.now()
|
||||
folio = scan.folio + 1
|
||||
hora = date.strftime("%H:%M:%S")
|
||||
form = FormordenservicioEnv()
|
||||
return render(request, "crear_servicio.html", {"form": form, "folio": folio, "hora": hora})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_ordserviciobit(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formordenservicio(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
folio = form.cleaned_data.get("folio")
|
||||
nreporte = form.cleaned_data.get("n_reporte")
|
||||
update = bitreporte.objects.values('pendiente').filter(control_bit=nreporte).update(pendiente='Realizado')
|
||||
update1 = bitpendientes.objects.values('concluido').filter(n_reporte=nreporte).update(concluido='Realizado')
|
||||
messages.success(request, f"La servicio con el {folio} se ha creado o actualizado correctamente")
|
||||
return redirect("servicios")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
scan = ordenservicio.objects.latest('id')
|
||||
date = datetime.datetime.now()
|
||||
folio = scan.folio + 1
|
||||
hora = date.strftime("%H:%M:%S")
|
||||
controlb = cb
|
||||
dato = bitreporte.objects.filter(control_bit=controlb)
|
||||
falla = dato[0].reporte
|
||||
reporta_ib = dato[0].asignado.id
|
||||
quien_reporta = dato[0].quien_reporta
|
||||
reporta_ib_1 = dato[0].asignado
|
||||
if bitpendientes.objects.filter(n_reporte=cb).exists():
|
||||
datos = bitpendientes.objects.get(n_reporte=cb)
|
||||
form1 = FormordenservicioEnvbit1()
|
||||
form2 = FormordenservicioEnvbit2()
|
||||
form3 = FormordenservicioEnvbit3()
|
||||
form4 = FormordenservicioEnvbit4()
|
||||
form5 = FormordenservicioEnvbit5()
|
||||
form6 = FormordenservicioEnvbit6()
|
||||
datosseg = serviciorealizado.objects.filter(control_bit=cb)
|
||||
datosacc = accesorios.objects.filter(control_bit=cb)
|
||||
return render(request, "crear_serviciobit.html", {"form1": form1, "form2": form2, "form3": form3, "form4": form4, "form5": form5, "form6": form6, "folio": folio, "hora": hora, "controlb": controlb, "datos": datos, "falla": falla, "reporta_ib": reporta_ib, "reporta_ib_1": reporta_ib_1, "quien_reporta": quien_reporta, "datosseg": datosseg, "datosacc": datosacc})
|
||||
else:
|
||||
form1 = FormordenservicioEnvbit1()
|
||||
form2 = FormordenservicioEnvbit2()
|
||||
form3 = FormordenservicioEnvbit3()
|
||||
form4 = FormordenservicioEnvbit4()
|
||||
form5 = FormordenservicioEnvbit5()
|
||||
form6 = FormordenservicioEnvbit6()
|
||||
datosseg = serviciorealizado.objects.filter(control_bit=cb)
|
||||
datosacc = accesorios.objects.filter(control_bit=cb)
|
||||
return render(request, "crear_serviciobit.html", {"form1": form1, "form2": form2, "form3": form3, "form4": form4, "form5": form5, "form6": form6, "folio": folio, "hora": hora, "controlb": controlb, "falla": falla, "reporta_ib": reporta_ib, "reporta_ib_1": reporta_ib_1, "quien_reporta": quien_reporta, "datosseg": datosseg, "datosacc": datosacc})
|
||||
pass
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def ActualizarOrden(request, id):
|
||||
instance= get_object_or_404(ordenservicio, pk=id)
|
||||
form = Formordenservicio(request.POST or None, instance=instance)
|
||||
context= {'form': form}
|
||||
if form.is_valid():
|
||||
obj= form.save(commit= False)
|
||||
obj.save()
|
||||
messages.success(request, "La Orden fue actualizada")
|
||||
return redirect("servicios")
|
||||
|
||||
else:
|
||||
context= {'form': form, 'error': 'Error al actualizar'}
|
||||
return render(request,'actualizar_orden.html' , context)
|
||||
|
||||
|
||||
|
||||
|
||||
################################ servicios realizados ###################################
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_servrealizado(request):
|
||||
if request.method == "POST":
|
||||
form = Formserviciorealizado(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
folio = form.cleaned_data.get("folio")
|
||||
control_bit = form.cleaned_data.get("control_bit")
|
||||
n_control = form.cleaned_data.get("ser_s_n_control")
|
||||
messages.success(request, f"El servicio con el reporte: {control_bit} se ha creado o actualizado correctamente")
|
||||
form = FormaccesoriosEnv()
|
||||
return render(request, "crear_servaccesorios.html", {"form": form, "folio": folio, "control": control_bit, "n_control": n_control})
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormserviciorealizadoEnv()
|
||||
datos = serviciorealizado.objects.all()
|
||||
return render(request, "crear_servrealizado.html", {"form": form, "datos": datos})
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_servrealizadopen(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formserviciorealizado(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
folio = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El servicio con el reporte: {folio} se ha creado o actualizado correctamente")
|
||||
return redirect("index")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormserviciorealizadoEnv()
|
||||
controlcb = cb
|
||||
datos = bitpendientes.objects.get(n_reporte=cb)
|
||||
datosseg = serviciorealizado.objects.filter(control_bit=cb)
|
||||
return render(request, "penseguimiento.html", {"form": form, "controlcb": controlcb, "datos": datos, "datosseg": datosseg})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_servrealizadobit(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formserviciorealizado(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
reporte1 = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El seguimiento con el reporte: {reporte1} se ha creado o actualizado correctamente")
|
||||
return redirect("bitacora")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormserviciorealizadoEnv()
|
||||
controlcb = cb
|
||||
datos = bitreporte.objects.get(control_bit=cb)
|
||||
datosseg = serviciorealizado.objects.filter(control_bit=cb)
|
||||
return render(request, "bitseguimiento.html", {"form": form, "controlcb": controlcb, "datos": datos, "datosseg": datosseg})
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_servrealizadocon(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formserviciorealizado(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
reporte1 = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El seguimiento con el reporte: {reporte1} se ha creado o actualizado correctamente")
|
||||
return redirect("bitacora")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormserviciorealizadoEnv()
|
||||
controlcb = cb
|
||||
datos = ordenservicio.objects.get(n_reporte=cb)
|
||||
return render(request, "conseguimiento.html", {"form": form, "controlcb": controlcb, "datos": datos})
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def servrealizado(request, cb):
|
||||
datos = serviciorealizado.objects.filter(control_bit=cb)
|
||||
return render(request, "crear_servrealizado.html", {"datos": datos})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def verservrealizado(request, cb):
|
||||
datos = serviciorealizado.objects.filter(control_bit=cb)
|
||||
return render(request, "ver_seguimiento.html", {"datos": datos})
|
||||
|
||||
################################ accesorios ###################################################
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_accesorios(request):
|
||||
if request.method == "POST":
|
||||
form = Formaccesorios(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El accesorio con el reporte: {control_bit} se ha creado o actualizado correctamente")
|
||||
return redirect("servicios")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormaccesoriosEnv()
|
||||
datos = accesorios.objects.all()
|
||||
return render(request, "crear_servaccesorios.html", {"form": form, "datos": datos})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_accesoriospen(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formaccesorios(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El accesorio con el Reporte: {control_bit} se ha creado o actualizado correctamente")
|
||||
return redirect("pendientes")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormaccesoriosEnv()
|
||||
controlcb = cb
|
||||
dat = bitpendientes.objects.get(n_reporte=cb)
|
||||
return render(request, "crear_servaccesoriospen.html", {"form": form, "controlcb": controlcb, "dat": dat})
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_accesoriosbit(request, cb):
|
||||
if request.method == "POST":
|
||||
form = Formaccesorios(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("control_bit")
|
||||
messages.success(request, f"El accesorio con el Reporte: {control_bit} se ha creado o actualizado correctamente")
|
||||
return redirect("pendientes")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormaccesoriosEnv()
|
||||
controlcb = cb
|
||||
dat = bitreporte.objects.get(control_bit=cb)
|
||||
return render(request, "crear_servaccesoriospen.html", {"form": form, "controlcb": controlcb, "dat": dat})
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def servaccesorios(request, cb):
|
||||
datos = accesorios.objects.filter(control_bit=cb)
|
||||
return render(request, "crear_servaccesorios.html", {"datos": datos})
|
||||
|
||||
########################## refacciones ###########################
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_refaccionesbit(request, cr, cb):
|
||||
if request.method == "POST":
|
||||
form = Formrefacciones(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.usuario = request.user
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("n_reporte")
|
||||
refex = form.cleaned_data.get("referencia")
|
||||
y = form.cleaned_data.get("cantidad")
|
||||
x = pieza.objects.only('referencia').filter(referencia=refex)[0]
|
||||
nuevo = x.cantidad - y
|
||||
update = pieza.objects.values('cantidad').filter(referencia=refex).update(cantidad=nuevo)
|
||||
messages.success(request, f"Se agrego la refaccion al Reporte: {control_bit} correctamente")
|
||||
return redirect("bitacora")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
controlcb = cb
|
||||
controlcr = cr
|
||||
return render(request, "crear_refaccionesbit.html", {"controlcb": controlcb, "controlcr": controlcr})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_refaccionespen(request, cr, cb):
|
||||
if request.method == "POST":
|
||||
form = Formrefacciones(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("n_reporte")
|
||||
refex = form.cleaned_data.get("referencia")
|
||||
y = form.cleaned_data.get("cantidad")
|
||||
x = pieza.objects.only('referencia').filter(referencia=refex)[0]
|
||||
nuevo = x.cantidad - y
|
||||
update = pieza.objects.values('cantidad').filter(referencia=refex).update(cantidad=nuevo)
|
||||
messages.success(request, f"Se agrego la refaccion al Reporte: {control_bit} correctamente")
|
||||
return redirect("pendientes")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
controlcb = cb
|
||||
controlcr = cr
|
||||
return render(request, "crear_refaccionespen.html", {"controlcb": controlcb, "controlcr": controlcr})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def refaccionespre(request, cb):
|
||||
controlcb = cb
|
||||
datos = pieza.objects.all()
|
||||
return render(request, "crear_refaccionespre.html", {"datos": datos, "controlcb": controlcb})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def refacciones1(request, cb):
|
||||
controlcb = cb
|
||||
datos = refacciones.objects.filter(n_reporte=controlcb)
|
||||
return render(request, "refacciones.html", {"datos": datos})
|
||||
|
||||
|
||||
########################## PDF ###################################
|
||||
|
||||
class pdf(View):
|
||||
def link_callback(self, uri, rel):
|
||||
result = finders.find(uri)
|
||||
if result:
|
||||
if not isinstance(result, (list, tuple)):
|
||||
result = [result]
|
||||
result = list(os.path.realpath(path) for path in result)
|
||||
path=result[0]
|
||||
else:
|
||||
sUrl = settings.STATIC_URL # Typically /static/
|
||||
sRoot = settings.STATIC_ROOT # Typically /home/userX/project_static/
|
||||
mUrl = settings.MEDIA_URL # Typically /media/
|
||||
mRoot = settings.MEDIA_ROOT # Typically /home/userX/project_static/media/
|
||||
|
||||
if uri.startswith(mUrl):
|
||||
path = os.path.join(mRoot, uri.replace(mUrl, ""))
|
||||
elif uri.startswith(sUrl):
|
||||
path = os.path.join(sRoot, uri.replace(sUrl, ""))
|
||||
else:
|
||||
return uri
|
||||
|
||||
# make sure that file exists
|
||||
if not os.path.isfile(path):
|
||||
raise Exception(
|
||||
'media URI must start with %s or %s' % (sUrl, mUrl)
|
||||
)
|
||||
return path
|
||||
|
||||
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
try:
|
||||
dato = ordenservicio.objects.get(pk=self.kwargs['pk'])
|
||||
equipo = invequipo.objects.get(n_control=dato.orden_n_control)
|
||||
aces = accesorios.objects.filter(control_bit=dato.n_reporte)
|
||||
serv = serviciorealizado.objects.filter(control_bit=dato.n_reporte)
|
||||
t_serv = tiposervicio.objects.get(pk=dato.tipo_servicio_id)
|
||||
t_falla = falla.objects.get(pk=dato.origen_falla_id)
|
||||
firma1 = User.objects.get(pk=dato.ib1_id)
|
||||
if dato.id_ib2_id is None :
|
||||
template = get_template('pdf.html')
|
||||
context = {'dato': dato, 'equipo': equipo, 'aces': aces, 'serv': serv , 't_serv': t_serv , 't_falla': t_falla, 'firma1': firma1 }
|
||||
html = template.render(context)
|
||||
response = HttpResponse(content_type='application/pdf')
|
||||
pisa_status = pisa.CreatePDF(
|
||||
html, dest=response,
|
||||
link_callback=self.link_callback
|
||||
)
|
||||
return response
|
||||
|
||||
firma2 = User.objects.get(pk=dato.id_ib2_id)
|
||||
template = get_template('pdf.html')
|
||||
context = {'dato': dato, 'equipo': equipo, 'aces': aces, 'serv': serv , 't_serv': t_serv , 't_falla': t_falla, 'firma1': firma1, 'firma2': firma2 }
|
||||
html = template.render(context)
|
||||
response = HttpResponse(content_type='application/pdf')
|
||||
pisa_status = pisa.CreatePDF(
|
||||
html, dest=response,
|
||||
link_callback=self.link_callback
|
||||
)
|
||||
return response
|
||||
except:
|
||||
pass
|
||||
return redirect("servicios")
|
||||
|
||||
|
||||
|
||||
########################## PREVENTIVO ###################################
|
||||
|
||||
|
||||
|
||||
class Calendario(ListView):
|
||||
model = preventivo
|
||||
template_name = 'preventivo1.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(Calendario, self).get_context_data(**kwargs)
|
||||
listas = preventivo.objects.all()
|
||||
context['listas'] = listas
|
||||
return context
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def Preventivo(request):
|
||||
datos = preventivo.objects.filter(estatus="PENDIENTE")
|
||||
return render(request, 'preventivo.html', {"datos": datos})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def PreventivoAll(request):
|
||||
datos = preventivo.objects.all()
|
||||
return render(request, 'preventivoall.html', {"datos": datos})
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def crear_preventivo(request):
|
||||
if request.method == "POST":
|
||||
form = Formpreventivo(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.save()
|
||||
control_bit = form.cleaned_data.get("n_control")
|
||||
messages.success(request, f"El servicio preventivo con numero de control: {control_bit} se ha creado correctamente")
|
||||
return redirect("preventivo")
|
||||
else:
|
||||
for field, items in form.errors.items():
|
||||
for item in items:
|
||||
messages.error(request, '{}: {}'.format(field, item))
|
||||
|
||||
form = FormpreventivoEnv()
|
||||
return render(request, "crearpreventivo.html", {"form": form })
|
||||
|
||||
|
||||
@login_required(login_url='/acceder')
|
||||
def ActualizarPreventivo(request, id):
|
||||
instance= get_object_or_404(preventivo, pk=id)
|
||||
form = Formpreventivo(request.POST or None, instance=instance)
|
||||
context= {'form': form}
|
||||
if form.is_valid():
|
||||
obj= form.save(commit= False)
|
||||
obj.save()
|
||||
messages.success(request, "El servicio preventivo fue actualizado")
|
||||
return redirect("preventivo")
|
||||
else:
|
||||
context= {'form': form, 'error': 'Error al actualizar'}
|
||||
return render(request,'actualizar_preventivo.html' , context)
|
||||
|
||||
|
||||
################### EXCEL ####################
|
||||
@login_required(login_url='/acceder')
|
||||
def ReporteExcelServicios(request):
|
||||
servicios = ordenservicio.objects.all()
|
||||
ibs = User.objects.all()
|
||||
datostiposervicio = tiposervicio.objects.all()
|
||||
datosfalla = falla.objects.all()
|
||||
datosservicio = serviciorealizado.objects.all()
|
||||
datosaccesorios = accesorios.objects.all()
|
||||
fecha = datetime.datetime.now()
|
||||
fe = str(fecha)
|
||||
wb = Workbook()
|
||||
ws = wb.active
|
||||
ws['B1'] = 'REPORTE DE SERVICIOS CONCLUIDOS'
|
||||
|
||||
ws.merge_cells('B1:L1')
|
||||
|
||||
ws['B2'] = datetime.datetime.now()
|
||||
|
||||
ws.merge_cells('B2:D2')
|
||||
|
||||
ws['B3'] = 'FOLIO'
|
||||
ws['C3'] = 'FECHA'
|
||||
ws['D3'] = 'REPORTA'
|
||||
ws['E3'] = 'IB1'
|
||||
ws['F3'] = 'IB2'
|
||||
ws['G3'] = 'No. CONTROL'
|
||||
ws['H3'] = 'No. REPORTE'
|
||||
ws['I3'] = 'T. SERVICIO'
|
||||
ws['J3'] = 'ORIGEN FALLA'
|
||||
ws['K3'] = 'FALLA DETECTADA'
|
||||
ws['L3'] = 'SERVICIOS'
|
||||
ws['M3'] = 'ACCESORIOS'
|
||||
|
||||
cont = 4
|
||||
|
||||
for servicio in servicios:
|
||||
for ib in ibs:
|
||||
if servicio.ib1_id == ib.id:
|
||||
ibuser = ib.username
|
||||
ibuser2 = ""
|
||||
if servicio.ib2_id is not None :
|
||||
for ib in ibs:
|
||||
if servicio.ib2_id == ib.id:
|
||||
ibuser2 = ib.username
|
||||
for datotiposervicio in datostiposervicio:
|
||||
if servicio.tipo_servicio_id == datotiposervicio.id:
|
||||
tiposervicio1 = datotiposervicio.nombre
|
||||
for datofalla in datosfalla:
|
||||
if servicio.origen_falla_id == datofalla.id:
|
||||
falla1 = datofalla.nombre
|
||||
|
||||
count = 0
|
||||
serreali = ""
|
||||
for datoservicio in datosservicio:
|
||||
if servicio.n_reporte == datoservicio.control_bit:
|
||||
count = count + 1
|
||||
realizado = str(count) + " - " + datoservicio.descripcion
|
||||
serreali = serreali + " // " + realizado
|
||||
if count == 0 :
|
||||
serreali = ""
|
||||
count = 0
|
||||
|
||||
count1 = 0
|
||||
seracce = ""
|
||||
for datoaccesorios in datosaccesorios:
|
||||
if servicio.n_reporte == datoaccesorios.control_bit:
|
||||
count1 = count1 + 1
|
||||
acceso = str(count1) + " - " + datoaccesorios.n_parte + " | " + datoaccesorios.descripcion
|
||||
seracce = seracce + " // " + acceso
|
||||
if count1 == 0 :
|
||||
seracce = ""
|
||||
|
||||
ws.cell(row=cont, column=2).value = servicio.folio
|
||||
ws.cell(row=cont, column=3).value = servicio.fecha
|
||||
ws.cell(row=cont, column=4).value = servicio.reporta
|
||||
ws.cell(row=cont, column=5).value = ibuser
|
||||
ws.cell(row=cont, column=6).value = ibuser2
|
||||
ws.cell(row=cont, column=7).value = servicio.orden_n_control
|
||||
ws.cell(row=cont, column=8).value = servicio.n_reporte
|
||||
ws.cell(row=cont, column=9).value = tiposervicio1
|
||||
ws.cell(row=cont, column=10).value = falla1
|
||||
ws.cell(row=cont, column=11).value = servicio.falla_detectada
|
||||
ws.cell(row=cont, column=12).value = serreali
|
||||
ws.cell(row=cont, column=13).value = seracce
|
||||
|
||||
cont += 1
|
||||
serreali = ""
|
||||
seracce = ""
|
||||
|
||||
nombre_archivo = "ReporteServicioConcluidos "+fe+".xlsx"
|
||||
response = HttpResponse(content_type="application/ms-excel")
|
||||
content = "attachment; filename = {0}".format(nombre_archivo)
|
||||
response['Content-Disposition'] = content
|
||||
wb.save(response)
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user