Commit fa74a4ac4c426049974b11de3241d805fdc8effe
1 parent
591880e62b
Exists in
master
botones guardar, salir
Showing
7 changed files
with
153 additions
and
120 deletions
Show diff stats
package-lock.json
| ... | ... | @@ -932,6 +932,14 @@ |
| 932 | 932 | } |
| 933 | 933 | } |
| 934 | 934 | }, |
| 935 | + "angular2-ladda": { | |
| 936 | + "version": "2.0.1", | |
| 937 | + "resolved": "https://registry.npmjs.org/angular2-ladda/-/angular2-ladda-2.0.1.tgz", | |
| 938 | + "integrity": "sha512-o0etA77PienX2sHD9fGHjGeg5fmzYpnUPVm/92f6fEVuNQ31OaRxFPVJ8S8ZDEWlq6YFpwkv/ytHFz4NAQ6MdQ==", | |
| 939 | + "requires": { | |
| 940 | + "ladda": "^2.0.1" | |
| 941 | + } | |
| 942 | + }, | |
| 935 | 943 | "ansi": { |
| 936 | 944 | "version": "0.3.1", |
| 937 | 945 | "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", |
| ... | ... | @@ -5545,6 +5553,14 @@ |
| 5545 | 5553 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", |
| 5546 | 5554 | "dev": true |
| 5547 | 5555 | }, |
| 5556 | + "ladda": { | |
| 5557 | + "version": "2.0.1", | |
| 5558 | + "resolved": "https://registry.npmjs.org/ladda/-/ladda-2.0.1.tgz", | |
| 5559 | + "integrity": "sha512-ynRaMdW9y9ABRdTUWa60HSQjtTkoEZMiQDzzYsX8yxIEm7mxL/sxpvoLutYox1XluRif3DxLDg+3Dl1wurjnJg==", | |
| 5560 | + "requires": { | |
| 5561 | + "spin.js": "^4.0.0" | |
| 5562 | + } | |
| 5563 | + }, | |
| 5548 | 5564 | "lcid": { |
| 5549 | 5565 | "version": "2.0.0", |
| 5550 | 5566 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", |
| ... | ... | @@ -8546,6 +8562,11 @@ |
| 8546 | 8562 | "chalk": "^2.0.1" |
| 8547 | 8563 | } |
| 8548 | 8564 | }, |
| 8565 | + "spin.js": { | |
| 8566 | + "version": "4.0.0", | |
| 8567 | + "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-4.0.0.tgz", | |
| 8568 | + "integrity": "sha512-uJN9Q4/I4I7PRZAp1c5reoY89thAfvFB5thbJncAwkPjPhqCfUrCooJc8GMN8q8WKFGIMy+JMf477RW7deCInA==" | |
| 8569 | + }, | |
| 8549 | 8570 | "split-string": { |
| 8550 | 8571 | "version": "3.1.0", |
| 8551 | 8572 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", |
package.json
| ... | ... | @@ -20,6 +20,7 @@ |
| 20 | 20 | "@angular/platform-browser-dynamic": "~8.0.0", |
| 21 | 21 | "@angular/router": "~8.0.0", |
| 22 | 22 | "@ng-bootstrap/ng-bootstrap": "^4.2.0", |
| 23 | + "angular2-ladda": "^2.0.1", | |
| 23 | 24 | "cordova-android": "^8.0.0", |
| 24 | 25 | "font-awesome": "^4.7.0", |
| 25 | 26 | "rxjs": "~6.4.0", |
| ... | ... | @@ -55,4 +56,4 @@ |
| 55 | 56 | "android" |
| 56 | 57 | ] |
| 57 | 58 | } |
| 58 | -} | |
| 59 | 59 | \ No newline at end of file |
| 60 | +} |
src/app/app.module.ts
| ... | ... | @@ -3,26 +3,30 @@ import { NgModule } from '@angular/core'; |
| 3 | 3 | import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; |
| 4 | 4 | import { HttpClientModule } from '@angular/common/http'; |
| 5 | 5 | import { FormsModule } from '@angular/forms'; |
| 6 | +import { LaddaModule } from 'angular2-ladda'; | |
| 6 | 7 | |
| 7 | 8 | import { AppRoutingModule } from './app-routing.module'; |
| 8 | 9 | import { AppComponent } from './app.component'; |
| 9 | 10 | import { AppBotonera } from './botonera/botonera.component'; |
| 10 | 11 | import { ComprobantesComponent } from './comprobantes/comprobantes.component'; |
| 11 | 12 | import { NombreEmpresaComponent } from './nombre-empresa/nombre-empresa.component'; |
| 13 | +import { AccionesComponent } from './acciones/acciones.component'; | |
| 12 | 14 | |
| 13 | 15 | @NgModule({ |
| 14 | 16 | declarations: [ |
| 15 | 17 | AppComponent, |
| 16 | 18 | AppBotonera, |
| 17 | 19 | ComprobantesComponent, |
| 18 | - NombreEmpresaComponent | |
| 20 | + NombreEmpresaComponent, | |
| 21 | + AccionesComponent | |
| 19 | 22 | ], |
| 20 | 23 | imports: [ |
| 21 | 24 | BrowserModule, |
| 22 | 25 | AppRoutingModule, |
| 23 | 26 | NgbModule, |
| 24 | 27 | HttpClientModule, |
| 25 | - FormsModule | |
| 28 | + FormsModule, | |
| 29 | + LaddaModule | |
| 26 | 30 | ], |
| 27 | 31 | providers: [], |
| 28 | 32 | bootstrap: [AppComponent] |
src/app/comprobantes/comprobantes.component.html
| ... | ... | @@ -28,138 +28,140 @@ |
| 28 | 28 | </div> |
| 29 | 29 | </div> |
| 30 | 30 | </div> |
| 31 | - | |
| 32 | -<form> | |
| 33 | - <div class="row border"> | |
| 34 | - <div class="col-6 col-sm-3 d-flex"> | |
| 35 | - <strong>Letra Factura: </strong> | |
| 36 | - <label>{{cabecera.TIP}}</label> | |
| 37 | - </div> | |
| 38 | - <div class="col-6 col-sm-3 d-flex"> | |
| 39 | - <strong>Tipo Factura: </strong> | |
| 40 | - <label>{{cabecera.TCO}}</label> | |
| 41 | - </div> | |
| 42 | - <div class="col-6 col-sm-3 d-flex"> | |
| 43 | - <strong>Sucursal: </strong> | |
| 44 | - <label>{{cabecera.SUC}}</label> | |
| 45 | - </div> | |
| 46 | - <div class="col-6 col-sm-3 d-flex"> | |
| 47 | - <strong>Número: </strong> | |
| 48 | - <label>{{cabecera.NCO}}</label> | |
| 49 | - </div> | |
| 50 | - <div class="col-6 col-sm-3 d-flex"> | |
| 51 | - <strong>Cuit: </strong> | |
| 52 | - <label>{{cabecera.CUI}}</label> | |
| 53 | - </div> | |
| 54 | - <div class="col-12 col-sm-3 d-flex"> | |
| 55 | - <strong>Nombre: </strong> | |
| 56 | - <label>{{cabecera.NOM}}</label> | |
| 31 | +<div class="row"> | |
| 32 | + <form class="col-12 col-sm-10"> | |
| 33 | + <div class="row border"> | |
| 34 | + <div class="col-6 col-sm-3 d-flex"> | |
| 35 | + <strong>Letra Factura: </strong> | |
| 36 | + <label>{{cabecera.TIP}}</label> | |
| 37 | + </div> | |
| 38 | + <div class="col-6 col-sm-3 d-flex"> | |
| 39 | + <strong>Tipo Factura: </strong> | |
| 40 | + <label>{{cabecera.TCO}}</label> | |
| 41 | + </div> | |
| 42 | + <div class="col-6 col-sm-3 d-flex"> | |
| 43 | + <strong>Sucursal: </strong> | |
| 44 | + <label>{{cabecera.SUC}}</label> | |
| 45 | + </div> | |
| 46 | + <div class="col-6 col-sm-3 d-flex"> | |
| 47 | + <strong>Número: </strong> | |
| 48 | + <label>{{cabecera.NCO}}</label> | |
| 49 | + </div> | |
| 50 | + <div class="col-6 col-sm-3 d-flex"> | |
| 51 | + <strong>Cuit: </strong> | |
| 52 | + <label>{{cabecera.CUI}}</label> | |
| 53 | + </div> | |
| 54 | + <div class="col-12 col-sm-3 d-flex"> | |
| 55 | + <strong>Nombre: </strong> | |
| 56 | + <label>{{cabecera.NOM}}</label> | |
| 57 | + </div> | |
| 57 | 58 | </div> |
| 58 | - </div> | |
| 59 | - <div class="row border"> | |
| 60 | - <div class="col-4"> | |
| 61 | - <button | |
| 59 | + <div class="row border"> | |
| 60 | + <div class="col-4"> | |
| 61 | + <button | |
| 62 | 62 | type="button" |
| 63 | 63 | class="btn btn-outline-secondary btn-sm" |
| 64 | 64 | [ngClass]="{'active': estadoArticulos == 'pendiente'}" |
| 65 | 65 | (click)="estadoArticulos = 'pendiente'; paginaActiva = 1; filter = '';"> |
| 66 | - Pendientes ({{getCantidadArticulosByEstado('pendiente')}}) | |
| 66 | + Pendientes ({{getCantidadArticulosByEstado('pendiente')}}) | |
| 67 | 67 | </button> |
| 68 | 68 | </div> |
| 69 | 69 | <div class="col-4"> |
| 70 | 70 | <button |
| 71 | - type="button" | |
| 72 | - class="btn btn-outline-success btn-sm" | |
| 73 | - [ngClass]="{'active': estadoArticulos == 'aprobado'}" | |
| 74 | - (click)="estadoArticulos = 'aprobado'; paginaActiva = 1; filter = '';"> | |
| 75 | - Aprobados ({{getCantidadArticulosByEstado('aprobado')}}) | |
| 71 | + type="button" | |
| 72 | + class="btn btn-outline-success btn-sm" | |
| 73 | + [ngClass]="{'active': estadoArticulos == 'aprobado'}" | |
| 74 | + (click)="estadoArticulos = 'aprobado'; paginaActiva = 1; filter = '';"> | |
| 75 | + Aprobados ({{getCantidadArticulosByEstado('aprobado')}}) | |
| 76 | 76 | </button> |
| 77 | 77 | </div> |
| 78 | 78 | <div class="col-4"> |
| 79 | 79 | <button |
| 80 | - type="button" | |
| 81 | - class="btn btn-outline-danger btn-sm" | |
| 82 | - [ngClass]="{'active': estadoArticulos == 'rechazado'}" | |
| 83 | - (click)="estadoArticulos = 'rechazado'; paginaActiva = 1; filter = '';"> | |
| 84 | - Rechazados ({{getCantidadArticulosByEstado('rechazado')}}) | |
| 85 | - </button> | |
| 86 | - </div> | |
| 80 | + type="button" | |
| 81 | + class="btn btn-outline-danger btn-sm" | |
| 82 | + [ngClass]="{'active': estadoArticulos == 'rechazado'}" | |
| 83 | + (click)="estadoArticulos = 'rechazado'; paginaActiva = 1; filter = '';"> | |
| 84 | + Rechazados ({{getCantidadArticulosByEstado('rechazado')}}) | |
| 85 | + </button> | |
| 87 | 86 | </div> |
| 88 | - <div class="row"> | |
| 89 | - <input | |
| 87 | +</div> | |
| 88 | +<div class="row"> | |
| 89 | + <input | |
| 90 | 90 | type="text" |
| 91 | 91 | class="form-control-sm col-12" |
| 92 | 92 | placeholder="Busque producto por nombre, codigo" |
| 93 | 93 | [(ngModel)]="filter" |
| 94 | 94 | [ngModelOptions]="{standalone: true}"/> |
| 95 | - </div> | |
| 96 | - <div class="row"> | |
| 97 | - <table class="table table-dark"> | |
| 98 | - <thead> | |
| 99 | - <tr> | |
| 100 | - <th *ngIf="estadoArticulos != 'rechazado'">Rechazar</th> | |
| 101 | - <th>Producto</th> | |
| 102 | - <th>Cantidad</th> | |
| 103 | - <th *ngIf="estadoArticulos != 'aprobado'">Aceptar</th> | |
| 104 | - </tr> | |
| 105 | - </thead> | |
| 106 | - <tbody> | |
| 107 | - <tr *ngFor="let articulo of getPaginaFiltro()" [ngClass]="{'bg-success': articulo.estado == 'aprobado'}"> | |
| 108 | - <th *ngIf="estadoArticulos != 'rechazado'"><button type="button" class="" (click)="articulo.estado = 'rechazado'"> | |
| 109 | - <i class="fa fa-window-close"></i> | |
| 110 | - </button></th> | |
| 111 | - <th>{{articulo.LI0}}</th> | |
| 112 | - <th *ngIf="!articulo.input" (click)="articulo.input = true"> | |
| 113 | - {{articulo.recibido ? articulo.recibido + '/' : ''}}{{articulo.CAN}}</th> | |
| 114 | - <th *ngIf="articulo.input"> | |
| 115 | - <input | |
| 116 | - class="form-control-sm col-12" | |
| 117 | - type="number" | |
| 118 | - (keyup.enter)="articulo.input = false" | |
| 119 | - [(ngModel)]="articulo.recibido" | |
| 120 | - [ngModelOptions]="{standalone: true}" | |
| 121 | - autofocus/> | |
| 122 | - /{{articulo.CAN}} | |
| 123 | - </th> | |
| 124 | - <th *ngIf="estadoArticulos != 'aprobado'"> | |
| 125 | - <button type="button" class="" (click)="articulo.estado = 'aprobado'"> | |
| 126 | - <i class="fa fa-check"></i> | |
| 127 | - </button> | |
| 128 | - </th> | |
| 129 | - </tr> | |
| 130 | - <tr> | |
| 131 | - <th colspan="3" *ngIf="articulosFiltro.length == 0">Por el momento no hay elementos aquí</th> | |
| 132 | - </tr> | |
| 133 | - </tbody> | |
| 134 | - <tfoot> | |
| 135 | - <nav *ngIf="articulosFiltro.length > 0" class="mr-auto position-absolute"> | |
| 136 | - <ul class="pagination pagination-sm justify-content mb-0"> | |
| 137 | - <li class="page-item" [ngClass]="{'disabled': paginaActiva == 1}"> | |
| 138 | - <a class="page-link" href="javascript:void();" (click)="paginaActiva = paginaActiva - 1"> | |
| 139 | - <span aria-hidden="true">«</span> | |
| 140 | - <span class="sr-only">Anterior</span> | |
| 141 | - </a> | |
| 142 | - </li> | |
| 143 | - <li | |
| 144 | - class="page-item" | |
| 145 | - *ngFor="let pagina of paginas; index as i" | |
| 146 | - [ngClass]="{'active': pagina == paginaActiva}" | |
| 147 | - > | |
| 148 | - <a | |
| 149 | - class="page-link" | |
| 150 | - href="javascript:void();" | |
| 151 | - (click)="paginaActiva = pagina" | |
| 152 | - >{{pagina}}</a> | |
| 153 | - </li> | |
| 154 | - <li class="page-item" [ngClass]="{'disabled': paginaActiva == paginas.length}"> | |
| 155 | - <a class="page-link" href="javascript:void();" (click)="paginaActiva = paginaActiva + 1"> | |
| 156 | - <span aria-hidden="true">»</span> | |
| 157 | - <span class="sr-only">Siguiente</span> | |
| 158 | - </a> | |
| 159 | - </li> | |
| 160 | - </ul> | |
| 161 | - </nav> | |
| 162 | - </tfoot> | |
| 163 | - </table> | |
| 164 | - </div> | |
| 165 | -</form> | |
| 95 | + </div> | |
| 96 | + <div class="row"> | |
| 97 | + <table class="table table-dark"> | |
| 98 | + <thead> | |
| 99 | + <tr> | |
| 100 | + <th *ngIf="estadoArticulos != 'rechazado'">Rechazar</th> | |
| 101 | + <th>Producto</th> | |
| 102 | + <th>Cantidad</th> | |
| 103 | + <th *ngIf="estadoArticulos != 'aprobado'">Aceptar</th> | |
| 104 | + </tr> | |
| 105 | + </thead> | |
| 106 | + <tbody> | |
| 107 | + <tr *ngFor="let articulo of getPaginaFiltro()" [ngClass]="{'bg-success': articulo.estado == 'aprobado'}"> | |
| 108 | + <th *ngIf="estadoArticulos != 'rechazado'"><button type="button" class="" (click)="articulo.estado = 'rechazado'"> | |
| 109 | + <i class="fa fa-window-close"></i> | |
| 110 | + </button></th> | |
| 111 | + <th>{{articulo.LI0}}</th> | |
| 112 | + <th *ngIf="!articulo.input" (click)="articulo.input = true"> | |
| 113 | + {{articulo.recibido ? articulo.recibido + '/' : ''}}{{articulo.CAN}}</th> | |
| 114 | + <th *ngIf="articulo.input"> | |
| 115 | + <input | |
| 116 | + class="form-control-sm col-12" | |
| 117 | + type="number" | |
| 118 | + (keyup.enter)="articulo.input = false" | |
| 119 | + [(ngModel)]="articulo.recibido" | |
| 120 | + [ngModelOptions]="{standalone: true}" | |
| 121 | + autofocus/> | |
| 122 | + /{{articulo.CAN}} | |
| 123 | + </th> | |
| 124 | + <th *ngIf="estadoArticulos != 'aprobado'"> | |
| 125 | + <button type="button" class="" (click)="articulo.estado = 'aprobado'"> | |
| 126 | + <i class="fa fa-check"></i> | |
| 127 | + </button> | |
| 128 | + </th> | |
| 129 | + </tr> | |
| 130 | + <tr> | |
| 131 | + <th colspan="3" *ngIf="articulosFiltro.length == 0">Por el momento no hay elementos aquí</th> | |
| 132 | + </tr> | |
| 133 | + </tbody> | |
| 134 | + <tfoot> | |
| 135 | + <nav *ngIf="articulosFiltro.length > 0" class="mr-auto position-absolute mb-5"> | |
| 136 | + <ul class="pagination pagination-sm justify-content mb-0"> | |
| 137 | + <li class="page-item" [ngClass]="{'disabled': paginaActiva == 1}"> | |
| 138 | + <a class="page-link" href="javascript:void();" (click)="paginaActiva = paginaActiva - 1"> | |
| 139 | + <span aria-hidden="true">«</span> | |
| 140 | + <span class="sr-only">Anterior</span> | |
| 141 | + </a> | |
| 142 | + </li> | |
| 143 | + <li | |
| 144 | + class="page-item" | |
| 145 | + *ngFor="let pagina of paginas; index as i" | |
| 146 | + [ngClass]="{'active': pagina == paginaActiva}" | |
| 147 | + > | |
| 148 | + <a | |
| 149 | + class="page-link" | |
| 150 | + href="javascript:void();" | |
| 151 | + (click)="paginaActiva = pagina" | |
| 152 | + >{{pagina}}</a> | |
| 153 | + </li> | |
| 154 | + <li class="page-item" [ngClass]="{'disabled': paginaActiva == paginas.length}"> | |
| 155 | + <a class="page-link" href="javascript:void();" (click)="paginaActiva = paginaActiva + 1"> | |
| 156 | + <span aria-hidden="true">»</span> | |
| 157 | + <span class="sr-only">Siguiente</span> | |
| 158 | + </a> | |
| 159 | + </li> | |
| 160 | + </ul> | |
| 161 | + </nav> | |
| 162 | + </tfoot> | |
| 163 | + </table> | |
| 164 | + </div> | |
| 165 | + </form> | |
| 166 | + <app-acciones (guardar)="guardarComprobante()"></app-acciones> | |
| 167 | +</div> |
src/app/comprobantes/comprobantes.component.ts
src/index.html
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 9 | 9 | <link rel="icon" type="image/x-icon" href="assets/img/logo.png"> |
| 10 | 10 | <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> |
| 11 | - | |
| 11 | + | |
| 12 | 12 | <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> |
| 13 | 13 | |
| 14 | 14 | <script type="text/javascript" src="cordova.js"></script> |
src/styles.css