This commit is contained in:
nathalie 2022-11-08 14:34:17 -03:00
commit 426052ba09
25 changed files with 14597 additions and 222 deletions

View File

@ -8,6 +8,7 @@ use League\Csv\CannotInsertRecord;
use League\Csv\Writer;
use App\Producto;
use DB;
use League\Csv\Reader;
class GrupoDeCompra extends Model
{
@ -47,12 +48,37 @@ class GrupoDeCompra extends Model
$template[$fila] = [$productosIDNombre[$id], "0"];
$num_fila = $fila+1;
}
$template[$this->obtenerFilaDeBonoTransporte()] = ["Bonos de transporte", 0];
return $template;
}
private function obtenerFilaDeBonoTransporte() {
$csv = Reader::createFromPath(resource_path('csv/productos.csv'), 'r');
$csv->setDelimiter("|");
$csv->setEnclosure("'");
$registros = $csv->getRecords();
foreach($registros as $key => $registro)
if ($registro[0] == 'T') return $key+1;
throw new Exception('No hay bono de transporte');
}
private function totalPedidoSinBDT() {
$total = 0;
foreach ($this->subpedidos as $subpedido) {
$total += $subpedido->totalSinBDT();
}
return $total;
}
private function calcularCantidadBDT() {
return ceil($this->totalPedidoSinBDT() / 500);
}
public function exportarPedidoEnCSV(){
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id');
//si no hay pedidos aprobados, salir
if ($productos_en_pedido->count() == 0) { \Log::debug("El grupo de compra ". $this->nombre . " no tiene pedidos aprobados."); return; }
$records = $this->obtenerTemplateDeFilasVacias();
@ -62,6 +88,8 @@ class GrupoDeCompra extends Model
$records[$fila][1] = $producto_pedido->cantidad_pedida;
}
$records[$this->obtenerFilaDeBonoTransporte()][1] = $this->calcularCantidadBDT();
try {
$writer = Writer::createFromPath(resource_path('csv/exports/'.$this->nombre.'.csv'), 'w');
$writer->insertAll($records);

View File

@ -6,7 +6,7 @@ use Illuminate\Support\Facades\DB;
class PedidoController extends Controller
{
public function generarTablas()
public static function generarTablas()
{
//GENERAR TABLA DE PEDIDOS APROBADOS
DB::unprepared("DROP VIEW if exists pedidos_aprobados;

View File

@ -56,6 +56,7 @@ class Kernel extends HttpKernel
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'admin' => \App\Http\Middleware\Admin::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,

View File

@ -0,0 +1,26 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user();
if ($user->is_admin) {
return $next($request);
} else {
return response('Necesitás ser admin para hacer esto', 403);
}
}
}

View File

@ -17,7 +17,7 @@ class SubpedidoResource extends JsonResource
return [
'id' => $this->id,
'nombre' => $this->nombre,
'subtotal_productos' => number_format($this->getSubtotalProductos(),0),
'subtotal_productos' => number_format($this->totalSinBDT(),0),
'subtotal_bonos' => number_format($this->getSubtotalBonos(),0),
'bonos_de_transporte' => $this->cantidadBDT(),
'subtotal_bonos_de_transporte' => number_format($this->getSubtotalBDT(),0),

View File

@ -41,7 +41,7 @@ class Subpedido extends Model
}
//Subtotal de dinero de productos del pedido, sin bonos ni transporte
public function getSubtotalProductos()
public function totalSinBDT()
{
return $this->productosSinBonos()->sum('total');
}
@ -49,7 +49,7 @@ class Subpedido extends Model
//Cantidad de bonos de transporte
public function cantidadBDT()
{
return ceil($this->getSubtotalProductos() / 500);
return ceil($this->totalSinBDT() / 500);
}
//Subtotal de dinero de bonos de transporte
@ -66,7 +66,7 @@ class Subpedido extends Model
public function getTotal()
{
return $this->getSubtotalProductos() + $this->getSubtotalBDT() + $this->getSubtotalBonos();
return $this->totalSinBDT() + $this->getSubtotalBDT() + $this->getSubtotalBonos();
}
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.

View File

@ -13,7 +13,6 @@ class DatabaseSeeder extends Seeder
public function run()
{
$this->call(GrupoDeCompraSeeder::class);
//$this->call(ProductoSeeder::class);
$this->call(ImportarProductoSeeder::class);
}
}

View File

@ -25,8 +25,8 @@ class ImportarProductoSeeder extends Seeder
$toInsert = [];
$categoria = '';
foreach($registros as $i => $registro){
//las que no tienen tipo
if ($i <= $iHeader || !Arr::has($registro,$this::FILA_HEADER)){
//filas que están arriba del header
if ($i <= $iHeader){
continue;
}
@ -35,10 +35,9 @@ class ImportarProductoSeeder extends Seeder
break;
}
//no tienen
//filas que no tienen tipo
if (!Arr::has($registro,$this::FILA_HEADER)|| trim($registro[$this::FILA_HEADER]) == ''){
var_dump("no hay tipo");
var_dump($registro[$this::FILA_HEADER]);
var_dump("no hay tipo en la fila " . $i);
continue;
}

13
package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "pedi2",
"name": "www",
"lockfileVersion": 2,
"requires": true,
"packages": {
@ -7,6 +7,7 @@
"dependencies": {
"animate.css": "^4.1.1",
"bulma": "^0.9.4",
"bulma-switch": "^2.0.4",
"bulma-toast": "^2.4.1"
},
"devDependencies": {
@ -3006,6 +3007,11 @@
"resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz",
"integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ=="
},
"node_modules/bulma-switch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/bulma-switch/-/bulma-switch-2.0.4.tgz",
"integrity": "sha512-kMu4H0Pr0VjvfsnT6viRDCgptUq0Rvy7y7PX6q+IHg1xUynsjszPjhAdal5ysAlCG5HNO+5YXxeiu92qYGQolw=="
},
"node_modules/bulma-toast": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/bulma-toast/-/bulma-toast-2.4.1.tgz",
@ -15942,6 +15948,11 @@
"resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz",
"integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ=="
},
"bulma-switch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/bulma-switch/-/bulma-switch-2.0.4.tgz",
"integrity": "sha512-kMu4H0Pr0VjvfsnT6viRDCgptUq0Rvy7y7PX6q+IHg1xUynsjszPjhAdal5ysAlCG5HNO+5YXxeiu92qYGQolw=="
},
"bulma-toast": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/bulma-toast/-/bulma-toast-2.4.1.tgz",

View File

@ -26,6 +26,7 @@
"dependencies": {
"animate.css": "^4.1.1",
"bulma": "^0.9.4",
"bulma-switch": "^2.0.4",
"bulma-toast": "^2.4.1"
}
}

14156
public/css/app.css vendored

File diff suppressed because it is too large Load Diff

303
public/js/app.js vendored
View File

@ -2203,11 +2203,21 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: 'Login',
data: function data() {
return {
visible: false,
gdc: null
gdc: null,
passwordVisible: false,
passwordType: "password"
};
},
mounted: function mounted() {
@ -2217,6 +2227,12 @@ __webpack_require__.r(__webpack_exports__);
_this.gdc = gdc;
_this.visible = true;
});
},
methods: {
togglePassword: function togglePassword() {
if (this.passwordVisible) this.passwordType = "password";else this.passwordType = "text";
this.passwordVisible = !this.passwordVisible;
}
}
});
@ -2248,12 +2264,21 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "LoginAdmin.vue",
name: "LoginAdmin",
data: function data() {
return {
visible: false,
gdc: null
gdc: null,
passwordVisible: false,
passwordType: "password"
};
},
mounted: function mounted() {
@ -2263,6 +2288,12 @@ __webpack_require__.r(__webpack_exports__);
_this.gdc = gdc;
_this.visible = true;
});
},
methods: {
togglePassword: function togglePassword() {
if (this.passwordVisible) this.passwordType = "password";else this.passwordType = "text";
this.passwordVisible = !this.passwordVisible;
}
}
});
@ -2756,8 +2787,6 @@ __webpack_require__.r(__webpack_exports__);
var _this = this;
Event.$on('sync-aprobacion', function (unSubpedido) {
console.log(unSubpedido);
if (_this.pedido.id === unSubpedido.id) {
_this.pedido = unSubpedido;
}
@ -2783,8 +2812,6 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "BotonAdminSubpedidoRow",
props: {
@ -2797,7 +2824,7 @@ __webpack_require__.r(__webpack_exports__);
},
computed: {
mensaje: function mensaje() {
return this.pedido.aprobado ? "Desaprobar" : "Aprobar";
return this.pedido.aprobado ? "Aprobado" : "No aprobado";
}
},
methods: {
@ -2974,6 +3001,14 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "SubpedidosGdc",
@ -2982,7 +3017,7 @@ __webpack_require__.r(__webpack_exports__);
},
data: function data() {
return {
gdc: null,
gdc: 0,
subpedidos: []
};
},
@ -4506,8 +4541,9 @@ var render = function () {
[_vm._v("Seleccionar")]
),
_vm._v(" "),
_vm._l(_vm.gdcs, function (gdc) {
_vm._l(_vm.gdcs, function (gdc, index) {
return _c("option", {
key: index,
attrs: { name: gdc.nombre + (_vm.isAdmin ? "_admin" : "") },
domProps: {
textContent: _vm._s(
@ -4836,34 +4872,56 @@ var render = function () {
],
staticClass: "block",
},
[_vm._m(0), _vm._v(" "), _vm._m(1)]
[
_c("div", { staticClass: "field" }, [
_c("label", { staticClass: "label" }, [
_vm._v("Contraseña del barrio"),
]),
_vm._v(" "),
_c("div", { staticClass: "field has-addons" }, [
_c("div", { staticClass: "control" }, [
_c("input", {
staticClass: "input",
attrs: {
required: "",
type: this.passwordType,
name: "password",
placeholder: "Contraseña del barrio",
},
}),
]),
_vm._v(" "),
_c("div", { staticClass: "control" }, [
_c(
"a",
{
staticClass: "button is-info",
on: { click: _vm.togglePassword },
},
[
_vm._v(
"\n\t\t\t\t\t" +
_vm._s(
(_vm.passwordVisible ? "Ocultar" : "Mostrar") +
" contraseña"
) +
" \n\t\t\t\t"
),
]
),
]),
]),
_vm._v(" "),
_c("p", { staticClass: "help" }, [
_vm._v("Si no la sabés, consultá a tus compañerxs."),
]),
]),
_vm._v(" "),
_vm._m(0),
]
)
}
var staticRenderFns = [
function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "field" }, [
_c("label", { staticClass: "label" }, [_vm._v("Contraseña del barrio")]),
_vm._v(" "),
_c("p", { staticClass: "control" }, [
_c("input", {
staticClass: "input",
attrs: {
required: "",
type: "password",
name: "password",
placeholder: "Contraseña del barrio",
},
}),
]),
_vm._v(" "),
_c("p", { staticClass: "help" }, [
_vm._v("Si no la sabés, consultá a tus compañerxs."),
]),
])
},
function () {
var _vm = this
var _h = _vm.$createElement
@ -4912,36 +4970,56 @@ var render = function () {
],
staticClass: "block",
},
[_vm._m(0), _vm._v(" "), _vm._m(1)]
[
_c("div", { staticClass: "field" }, [
_c("label", { staticClass: "label has-text-white" }, [
_vm._v("Contraseña de administración del barrio"),
]),
_vm._v(" "),
_c("div", { staticClass: "field has-addons" }, [
_c("div", { staticClass: "control" }, [
_c("input", {
staticClass: "input",
attrs: {
required: "",
type: this.passwordType,
name: "password",
placeholder: "Contraseña de admin del barrio",
},
}),
]),
_vm._v(" "),
_c("div", { staticClass: "control" }, [
_c(
"a",
{
staticClass: "button is-warning",
on: { click: _vm.togglePassword },
},
[
_vm._v(
"\n\t\t\t\t\t\t" +
_vm._s(
(_vm.passwordVisible ? "Ocultar" : "Mostrar") +
" contraseña"
) +
" \n\t\t\t\t\t"
),
]
),
]),
]),
_vm._v(" "),
_c("p", { staticClass: "help has-text-white" }, [
_vm._v("Si no la sabés, consultá a la comisión informática."),
]),
]),
_vm._v(" "),
_vm._m(0),
]
)
}
var staticRenderFns = [
function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "field" }, [
_c("label", { staticClass: "label has-text-white" }, [
_vm._v("Contraseña de administración del barrio"),
]),
_vm._v(" "),
_c("p", { staticClass: "control" }, [
_c("input", {
staticClass: "input",
attrs: {
required: "",
type: "password",
name: "password",
placeholder: "Contraseña de admin del barrio",
},
}),
]),
_vm._v(" "),
_c("p", { staticClass: "help has-text-white" }, [
_vm._v("Si no la sabés, consultá a la comisión informática."),
]),
])
},
function () {
var _vm = this
var _h = _vm.$createElement
@ -5647,8 +5725,9 @@ var render = function () {
[_vm._v("Seleccionar")]
),
_vm._v(" "),
_vm._l(_vm.regiones, function (region) {
_vm._l(_vm.regiones, function (region, index) {
return _c("option", {
key: index,
attrs: { name: region },
domProps: { textContent: _vm._s(region) },
})
@ -5721,24 +5800,24 @@ var render = function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"button",
{
staticClass: "button",
class: _vm.pedido.aprobado ? "is-danger" : "is-success",
on: { click: _vm.toggleAprobacion },
},
[
_c("span", { staticClass: "icon is-small" }, [
_c("i", {
staticClass: "fas",
class: _vm.pedido.aprobado ? "fa-times" : "fa-check",
}),
return _c("div", { staticClass: "field" }, [
_c("input", {
staticClass: "switch is-rounded is-success",
attrs: {
id: "switch" + this.pedido.id,
type: "checkbox",
name: "switchRoundedSuccess",
},
domProps: { checked: _vm.pedido.aprobado },
on: { change: _vm.toggleAprobacion },
}),
_vm._v(" "),
_c("label", { attrs: { for: "switch" + this.pedido.id } }, [
_c("span", { staticClass: "is-hidden-mobile" }, [
_vm._v(_vm._s(_vm.mensaje)),
]),
_vm._v(" "),
_c("span", [_vm._v(_vm._s(_vm.mensaje))]),
]
)
]),
])
}
var staticRenderFns = []
render._withStripped = true
@ -5847,6 +5926,7 @@ var render = function () {
return _c(
"div",
{
key: index,
staticClass: "columns is-mobile",
class: { "has-background-grey-lighter": index % 2 },
},
@ -5908,10 +5988,10 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true&":
/*!****************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true& ***!
\****************************************************************************************************************************************************************************************************************************/
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&":
/*!****************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d& ***!
\****************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@ -5940,6 +6020,21 @@ var render = function () {
},
[
_c("div", { staticClass: "buttons is-right" }, [
_c(
"a",
{
staticClass: "button is-success",
attrs: { href: "/admin/exportar-pedido-a-csv/" + _vm.gdc },
},
[
_c("span", [
_vm._v("\n Exportar pedido barrial\n "),
]),
_vm._v(" "),
_vm._m(0),
]
),
_vm._v(" "),
_c(
"a",
{
@ -5951,7 +6046,7 @@ var render = function () {
_vm._v("\n Imprimir Planillas\n "),
]),
_vm._v(" "),
_vm._m(0),
_vm._m(1),
]
),
]),
@ -5970,7 +6065,7 @@ var render = function () {
staticClass: "table is-fullwidth is-striped is-bordered",
},
[
_vm._m(1),
_vm._m(2),
_vm._v(" "),
_c("tfoot", [
_c("tr", [
@ -6018,6 +6113,14 @@ var render = function () {
)
}
var staticRenderFns = [
function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("span", { staticClass: "icon is-small" }, [
_c("i", { staticClass: "fas fa-download" }),
])
},
function () {
var _vm = this
var _h = _vm.$createElement
@ -6040,7 +6143,7 @@ var staticRenderFns = [
]),
]),
_vm._v(" "),
_c("th", [
_c("th", { staticClass: "is-1" }, [
_c("abbr", { attrs: { title: "Aprobacion" } }, [
_vm._v("Aprobación"),
]),
@ -19482,7 +19585,7 @@ __webpack_require__.r(__webpack_exports__);
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true& */ "./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true&");
/* harmony import */ var _SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SubpedidosGdc.vue?vue&type=template&id=652b385d& */ "./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&");
/* harmony import */ var _SubpedidosGdc_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SubpedidosGdc.vue?vue&type=script&lang=js& */ "./resources/js/components/SubpedidosGdc.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
@ -19494,11 +19597,11 @@ __webpack_require__.r(__webpack_exports__);
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_SubpedidosGdc_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
_SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
_SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__["render"],
_SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
"652b385d",
null,
null
)
@ -19524,19 +19627,19 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true&":
/*!**********************************************************************************************!*\
!*** ./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true& ***!
\**********************************************************************************************/
/***/ "./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&":
/*!**********************************************************************************!*\
!*** ./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d& ***!
\**********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&scoped=true&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./SubpedidosGdc.vue?vue&type=template&id=652b385d& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/SubpedidosGdc.vue?vue&type=template&id=652b385d&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SubpedidosGdc_vue_vue_type_template_id_652b385d___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@ -19560,8 +19663,8 @@ __webpack_require__.r(__webpack_exports__);
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! /home/ale/MPS/App/pedi2/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /home/ale/MPS/App/pedi2/resources/sass/app.scss */"./resources/sass/app.scss");
__webpack_require__(/*! /var/www/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /var/www/resources/sass/app.scss */"./resources/sass/app.scss");
/***/ })

View File

@ -1,4 +1,4 @@
CANASTA 82 - Octubre 2022|||||REFERENCIAS:
CANASTA 83 - Noviembre 2022|||||REFERENCIAS:
S-G (SIN GLUTEN)
S-S (SIN SAL AGREGADA)
S-A (SIN AZUCAR AGREGADA)
@ -13,7 +13,7 @@ P|Yerba Yusa tradicional 1kg|121.8||||||||||||0|0
P|Yerba Yusa tradicional 500grs|65||||||||||||0|0
P|Yerba Sara tradicional 1kg (Sin TACC)|135.64||||||||||||0|0
P|Yerba Sara suave 1kg (Sin TACC)|137.86||||||||||||0|0
P|*Harina Santa Unión 000 1kg|38.2||||||||||||0|0
P|*Harina Santa Unión 000 1kg|37.7||||||||||||0|0
P|*Harina Santa Unión 0000 1kg|43.6||||||||||||0|0
P|*Harina de trigo integral Pasaná 1 kg|65.0||||||||||||0|0
P|*Harina de arroz Pasaná 1 kg (Puede contener gluten)|65.0||||||||||||0|0
@ -31,58 +31,57 @@ P|*Fideos Caorsi para sopa 1kg|68||||||||||||0|0
P|*Fideos Caorsi para sopa 5kg|333||||||||||||0|0
P|*Fideos Caorsi Tirabuzón 5kg|333||||||||||||0|0
P|Arroz Blue Patna 1kg|42.23||||||||||||0|0
P|Arroz Shiva 1kg|29.77||||||||||||0|0
P|Arroz Shiva 1kg|25.65||||||||||||0|0
P|*Arroz integral 1kg|55||||||||||||0|0
P|*Arroz integral 3kg|155||||||||||||0|0
P|Aceite Condesa de Soja 900 cc.|97.7||||||||||||0|0
P|Aceite Uruguay de Girasol 900 cc.|120.6||||||||||||0|0
P|Aceite Optimo canola 900 cc.|98||||||||||||0|0
P|Aceite Condesa de Soja 900 cc.|93.3||||||||||||0|0
P|Aceite Uruguay de Girasol 900 cc.|115.2||||||||||||0|0
P|Aceite Optimo canola 900 cc.|102||||||||||||0|0
P|*Aceite de oliva 500 ml.|210||||||||||||0|0
P|Vinagre Uruguay 900ml|85.6||||||||||||0|0
P|Vinagre Uruguay 900ml|81.7||||||||||||0|0
P|Aceite de Oliva Cuatro Piedras 3 lt|1190||||||||||||0|0
P|*Salsa de soja La Posta 250 ml.|100||||||||||||0|0
P|*Aceitunas verdes sin carozo en frasco La Posta 500 gr.|195||||||||||||0|0
P|*Aceitunas negras sin carozo en frasco frasco La Posta 500 gr.|195||||||||||||0|0
P|Lata atún Golden Fish desmenuzado al aceite 170g|35.83||||||||||||0|0
P|Lata atún Golden Fish desmenuzado al aceite 170g|38.55||||||||||||0|0
P|Lata de arvejas Campero 300g|19||||||||||||0|0
P|Lata de choclo Cosecha 300g|27.14||||||||||||0|0
P|Lata de jardinera Cosecha|30.94||||||||||||0|0
P|Lata de porotos negros Cosecha|34.75||||||||||||0|0
P|Lata de porotos de frutilla Cosecha|34.75||||||||||||0|0
P|Lata de duraznos en almíbar Campero|65.15||||||||||||0|0
P|Mayonesa Uruguay 500g|90||||||||||||0|0
P|Azúcar Azucarlito 25kg|1131||||||||||||0|0
P|Lata de duraznos en almíbar Campero|72||||||||||||0|0
P|Mayonesa Uruguay 500g|85.7||||||||||||0|0
P|Azúcar Bella Unión 1kg|44.3||||||||||||0|0
P|Azúcar rubia Mascabo 500g|95||||||||||||0|0
P|Azúcar impalpable Hornex 200 gr|35||||||||||||0|0
P|Azúcar impalpable Hornex 1kg|115||||||||||||0|0
P|Almidón de maíz Hornex 1Kg|72||||||||||||0|0
P|Polvo de Hornear Hornex 1 kg|134||||||||||||0|0
P|Polvo de Hornear Hornex 100 g + 20 g|34.5||||||||||||0|0
P|*Esencia de vainilla La Posta 100ml|90||||||||||||0|0
P|Azúcar impalpable Hornex 200 gr|37||||||||||||0|0
P|Azúcar impalpable Hornex 1kg|121||||||||||||0|0
P|Almidón de maíz Hornex 1Kg|76||||||||||||0|0
P|Polvo de Hornear Hornex 1 kg|141||||||||||||0|0
P|Polvo de Hornear Hornex 100 g + 20 g|36.5||||||||||||0|0
P|*Esencia de vainilla La Posta 100ml|90.0||||||||||||0|0
P|*Bicarbonato de sodio La Posta 250 gr|50||||||||||||0|0
P|Grasa Uruguay 400grs|64.5||||||||||||0|0
P|Levadura seca Hornex 125g|115.5||||||||||||0|0
P|Grasa Uruguay 400grs|62||||||||||||0|0
P|Levadura seca Hornex 125g|118||||||||||||0|0
P|Café Sorocabana glaseado p/máquina 500 grs|356.51||||||||||||0|0
P|Café Sorocabana natural p/máquina 500 grs|483.64||||||||||||0|0
P|Café soluble Saint bollón 170 gr|192.7||||||||||||0|0
P|Té Negro en hebras 90gr hornimans|35.9||||||||||||0|0
P|Té Negro en hebras 90gr hornimans|35.85||||||||||||0|0
P|Galletas de arroz SIN SAL Natural Rice 120 gr.|36.0||||||||||||0|0
P|Galletas de arroz comunes Natural Rice 120 gr|36.0||||||||||||0|0
P|Leche en polvo entera 200 gr|100||||||||||||0|0
P|Leche en polvo entera 1kg|382||||||||||||0|0
P|* Coco rallado 200gr|60.0||||||||||||0|0
P|Leche en polvo entera 200 gr|100.0||||||||||||0|0
P|Leche en polvo entera 1kg|382.22||||||||||||0|0
P|* Coco rallado 200gr|65||||||||||||0|0
P|* Coco rallado 1kg|255.0||||||||||||0|0
P|Cocoa Hornex 200gr|47||||||||||||0|0
P|Postre de chocolate Hornex 8 porciones|39.3||||||||||||0|0
P|Postre LIGHT de vainilla Hornex 8 porciones (aprobado por ADU)|62.7||||||||||||0|0
P|Flan de vainilla Hornex 8 porciones|39.3||||||||||||0|0
P|Gelatina de frutilla Hornex 8 porciones|43.7||||||||||||0|0
P|Cocoa Hornex 200gr|49.5||||||||||||0|0
P|Postre de chocolate Hornex 8 porciones|41.5||||||||||||0|0
P|Postre LIGHT de vainilla Hornex 8 porciones (aprobado por ADU)|66.0||||||||||||0|0
P|Flan de vainilla Hornex 8 porciones|41.5||||||||||||0|0
P|Gelatina de frutilla Hornex 8 porciones|41.5||||||||||||0|0
P|Bizcochuelo de vainilla SIN GLUTEN 500gr Hornex|158||||||||||||0|0
P|Pizza SIN GLUTEN 320gr Hornex|150.0||||||||||||0|0
P|Pulpa de Tomate De Ley 1lt (S-G)|46.9||||||||||||0|0
P|Pure de papa instantaneo De Ley 125g|25||||||||||||0|0
P|*Sal fina sin fluor Polenteados 500g|28.0||||||||||||0|0
P|Pizza SIN GLUTEN 320gr Hornex|150||||||||||||0|0
P|Pulpa de Tomate De Ley 1lt (S-G)|52.0||||||||||||0|0
P|Pure de papa instantaneo De Ley 125g|25.2||||||||||||0|0
P|*Sal fina sin fluor Polenteados 500g|28||||||||||||0|0
P|*Sal gruesa sin fluor Polenteados 500g|28.0||||||||||||0|0
P |*Salsa de tomate casera (puro tomate) 1 lt - (S-G) - azucar agregada: 1g/L - sal agregada: 0,25g/L|75.0||||||||||||0|0
P|*Barras de cereales (maní, sésamo, lino, girasol, avena, copos de arroz, copos de máiz, azúcar rubia y miel) - Pack x2|75.0||||||||||||0|0
@ -92,9 +91,9 @@ P|*Granola simple (avena+ girasol+ pasaUva) 1kg|175.0||||||||||||0|0
P|*Copos de maíz azucarados 500g|92.0||||||||||||0|0
P|*Copos de maíz naturales 500g|92.0||||||||||||0|0
P|*Crema untable de maní 250gr|92.0||||||||||||0|0
P|Alfajor de coco 80 g (S-G) NUEVO!|44.0||||||||||||0|0
P|Galletitas dulces sabor cacao, nueces, avena y sésamo 150 g (S-G, S-A) NUEVO!|108.0||||||||||||0|0
P|Crackers saladas de remolacha y chía 180 g (S-G) NUEVO!|108.0||||||||||||0|0
P|Alfajor de coco 80 g (S-G) |44.0||||||||||||0|0
P|Galletitas dulces sabor cacao, nueces, avena y sésamo 150 g (S-G, S-A)|108.0||||||||||||0|0
P|Crackers saladas de remolacha y chía 180 g (S-G)|108.0||||||||||||0|0
P|*Lino 1/4 kg|30.0||||||||||||0|0
P|*Chía 1/4 kg|65.0||||||||||||0|0
P|*Girasol 1/2 kg|85.0||||||||||||0|0
@ -119,15 +118,15 @@ P|*Garbanzo Polenteados 1kg|95.0||||||||||||0|0
P|* Maiz para pop 500grs|54.0||||||||||||0|0
P|*Lentejas Polenteados 1kg|96.0||||||||||||0|0
P|*Porotos negros Polenteados 1kg|102.0||||||||||||0|0
P|*Porotos de manteca Polenteados 1kg|115||||||||||||0|0
P|*Porotos de manteca Polenteados 1kg|115.0||||||||||||0|0
P|*Proteína de SOJA texturizada 1kg|135||||||||||||0|0
CONDIMENTOS, PERECEDEROS Y BEBIDAS||||||||||||||0|0
P|*Tallarines frescos de yema Pastas Colon 1kg|165||||||||||||0|0
P|*Tallarines frescos de espinaca Pastas Colon 1kg|175.0||||||||||||0|0
P|*Tallarines frescos de morrón Pastas Colon 1kg|180||||||||||||0|0
P|*Salsa pomarola 300gr ex trabajadores de La Spezia|90.0||||||||||||0|0
P|*Fetuccine integral de zanahoria, apto veganos 1kg|190||||||||||||0|0
P|*Romanitos rellenos jamón y queso ex trabajadores de La Spezia 1kg|510.0||||||||||||0|0
P|*Tallarines frescos de yema Pastas Colon 1kg|175||||||||||||0|0
P|*Tallarines frescos de espinaca Pastas Colon 1kg|185||||||||||||0|0
P|*Tallarines frescos de morrón Pastas Colon 1kg|190.0||||||||||||0|0
P|*Salsa pomarola 300gr ex trabajadores de La Spezia|90||||||||||||0|0
P|*Fetuccine integral de zanahoria, apto veganos 1kg|190.0||||||||||||0|0
P|*Romanitos rellenos jamón y queso ex trabajadores de La Spezia 1kg|510||||||||||||0|0
P|*Romanitos vegetarianos ex trabajadores de La Spezia 1kg|510.0||||||||||||0|0
P|*Sorrentinos jamón y queso 1Kg ex trabajadores de La Spezia|470.0||||||||||||0|0
P|*Sorrentinos Ricota y Nuez 1kg ex Trabajadores de La Spezia|470.0||||||||||||0|0
@ -158,10 +157,10 @@ P|*Orégano 250g|105.0||||||||||||0|0
P|*Nuez moscada entera 2 unidades|23.0||||||||||||0|0
P|*Canela en rama 10g|23.0||||||||||||0|0
P|*Cúrcuma 20g|23.0||||||||||||0|0
P|*Pack "Sabores exoticos" - Paprika, Espinaca en polvo, Fenogreco en polvo.|59.0||||||||||||0|0
P|*Pack "Pa´l Mate" - Marcela, Cedrón, Malva.|110.0||||||||||||0|0
P|*Pack "Medicina de invierno" Salvia, Tilo, Guaco.|110.0||||||||||||0|0
P|*Pack "Té de las 5hs-Light" - Manzanilla, Lemon Grass, Petalos de Rosa.|110.0||||||||||||0|0
P|*Pack "Sabores exoticos" - Paprika, Espinaca en polvo, Mostaza en polvo.|62.0||||||||||||0|0
P|*Pack "Mate Uruguayo" - Marcela, Cedrón, Boldo.|115.0||||||||||||0|0
P|*Pack "Delicias del campo" Té rojo, Manzanilla, Pétalos de rosa.|115.0||||||||||||0|0
P|*Pack "Té de las 5hs-Light" - Té verde, Lemon Grass, Hojas de Stevia.|115.0||||||||||||0|0
P|Vino Santero Marselán 1 lt.|220.0||||||||||||0|0
P|Vino Tannat-Cabernet Paso del Roble 1 lt.|98.0||||||||||||0|0
P|Vino Rosado dulce Paso del Roble 1 lt.|98.0||||||||||||0|0
@ -171,7 +170,7 @@ P|*Cerveza artesanal Punto Rojo Red Ipa 500cc|100.0||||||||||||0|0
P|*Cerveza artesanal APA Guillotina 1L|190.0||||||||||||0|0
P|Fernet artesanal 780 ml|380.0||||||||||||0|0
P|Jugo en polvo "Juguito" sabores surtidos|8.0||||||||||||0|0
P|Jugo Big C 200ml sabores surtidos|17.4||||||||||||0|0
P|Jugo Big C 200ml sabores surtidos|15.5||||||||||||0|0
P|*Refresco U Naranja 2lt|84.0||||||||||||0|0
P|*Refresco U Mandarina 2lt|84.0||||||||||||0|0
P|*Refresco U Pomelo 2lt|84.0||||||||||||0|0
@ -211,12 +210,12 @@ P|*Miel artesanal 1 kg|230.0||||||||||||0|0
P|*Canasta de frutas y verduras "34 Sur Productos Orgánicos"|630.0||||||||||||0|0
ARTÍCULOS PERSONALES Y DE LIMPIEZA||||||||||||||0|0
P|Preservativos Prime ultrafinos x3|85.7||||||||||||0|0
P|Tabaco Cerrito|107.71||||||||||||0|0
P|Tabaco Cerrito|107.7||||||||||||0|0
P|Hojilla JOB x30|24.34||||||||||||0|0
P|Shampoo Suave 930ml|155.9||||||||||||0|0
P|Acondicionador Suave 930ml|155.9||||||||||||0|0
P|Shampoo Plusbelle 930ml|156.5||||||||||||0|0
P|Acondicionador Plusbelle 930ml|156.5||||||||||||0|0
P|Jabón de tocador IO, 80gs|13.7||||||||||||0|0
P|Cepillo dental Introdento (medio)|32.8||||||||||||0|0
P|Cepillo dental Introdento (medio)|32.79||||||||||||0|0
P|Pasta Dental Introdento menta 102 grs.|40.5||||||||||||0|0
P|*Pack x3 jabones glicerina vegetal Natura|330.0||||||||||||0|0
P|*Desodorante ecológico apto veganos Natura|165.0||||||||||||0|0
@ -229,7 +228,6 @@ P|*Acondicionador sólido 50gr Natura|350.0||||||||||||0|0
P|*Cepillo dental de bambú 97% biodegradable (niños y adultos)|165.0||||||||||||0|0
P|*Barrita quita manchas 75 gr Natura|100.0||||||||||||0|0
P|*Talco pédico 200gr|205.0||||||||||||0|0
P|*Bálsamo labial Herencias de aquelarre (protege y repara)|200.0||||||||||||0|0
P|*Jabón en polvo Bonsai 800g|70.0||||||||||||0|0
P|*Jabón en polvo Bonsai 5kg|380.0||||||||||||0|0
P|*Suavizante Bonsai 1lt|70.0||||||||||||0|0
@ -245,9 +243,9 @@ P|*Hipoclorito El Resistente 1800cc|72.0||||||||||||0|0
P|*Limpiador perfumado El Resistente (perfumol) 1800cc|72.0||||||||||||0|0
P|*Detergente El Resistente 500ml|48.0||||||||||||0|0
P|*KIT El Resistente (Hip./Perf./Det.)|176.0||||||||||||0|0
P|Jabon en barra Primor x1|25.4||||||||||||0|0
P|Rejilla de cocina 40 x 27.5 Tacuabé (ex Paylana) cm|27.0||||||||||||0|0
P|Trapo de piso 53 x 53 Tacuabé (ex Paylana)|36.0||||||||||||0|0
P|Jabon en barra Primor x1|29.4||||||||||||0|0
P|Rejilla de cocina 40 x 27.5 Tacuabé (ex Paylana) cm|29.0||||||||||||0|0
P|Trapo de piso 53 x 53 Tacuabé (ex Paylana)|37.0||||||||||||0|0
P|Esponja de cocina|26.0||||||||||||0|0
P|Esponja de acero inoxidable|29.0||||||||||||0|0
P|Repasador de algodón 43 x 65 cm|53.0||||||||||||0|0
@ -257,7 +255,7 @@ P|Pala con mango|99.0||||||||||||0|0
P|Balde 9 Lts|109.0||||||||||||0|0
P|Bolsa de residuos 50x55 30 unidades|63.0||||||||||||0|0
P|Lampazo|119.0||||||||||||0|0
P|Guantes de latex talle M|88.0||||||||||||0|0
P|Guantes de latex talle L|88.0||||||||||||0|0
P|Rollitos de alumnio x6|30.0||||||||||||0|0
P|*Vela de apagón|8.4||||||||||||0|0
P|*Vela de citronela 1 mecha|122.2||||||||||||0|0
@ -270,14 +268,14 @@ P|Toallita de bebé BabySec ultra 50un|72.0||||||||||||0|0
P|Papel Higienico: Higienol Texturado x4|42.0||||||||||||0|0
P|Papel de Cocina Sussex extra x 2 -120 paños-|62.0||||||||||||0|0
TEXTIL||||||||||||||0|0
P|*Calza licra de algodon talle S|900||||||||||||0|0
P|*Calza licra de algodon talle M|900.0||||||||||||0|0
P|*Calza licra de algodon talle L|900.0||||||||||||0|0
P|*Calza licra de algodon talle S|900.0||||||||||||0|0
P|*Calza licra de algodon talle M|900||||||||||||0|0
P|*Calza licra de algodon talle L|900||||||||||||0|0
P|*Calza licra de algodon talle XL|900.0||||||||||||0|0
P|*Conjunto primera muda 100% algodón color blanco liso (pack de pelele, bata y gorrito en bolsa de lienzo)|600.0||||||||||||0|0
P|*Conjunto primera muda 100% algodón rayado azul, naranja, verde, amarillo, blanco (pack de pelele, bata y gorrito en bolsa de lienzo)|600||||||||||||0|0
P|*Conjunto primera muda 100% algodón rayado azul, naranja, verde, amarillo, blanco (pack de pelele, bata y gorrito en bolsa de lienzo)|600.0||||||||||||0|0
P|*Conjunto primera muda 100% algodón color rayado rojo, verde pálido, rosa pálido, blanco (pack de pelele, bata y gorrito en bolsa de lienzo)|600.0||||||||||||0|0
P|*Calza licra de algodon talle 0|350.0||||||||||||0|0
P|*Calza licra de algodon talle 0|350||||||||||||0|0
P|*Calza licra de algodon talle 2|350.0||||||||||||0|0
P|*Calza licra de algodon talle 4|350.0||||||||||||0|0
P|*Calza licra de algodon talle 6|450.0||||||||||||0|0
@ -308,6 +306,7 @@ P|*Bikers licra de algodón - Talle S. |650.0||||||||||||0|0
P|*Bikers licra de algodón - Talle M.|650.0||||||||||||0|0
P|*Bikers licra de algodón - Talle L.|650.0||||||||||||0|0
P|*Bikers licra de algodón - Talle XL. |650.0||||||||||||0|0
P|* Bolsa estampada con logo MPS. Acción Solidaria. NUEVO!|155.0||||||||||||0|0
P|*Túnica niñe con cinto en espalda y tajo detrás- talles 6 a 16|650.0||||||||||||0|0
P|*Túnica niñe con martingala, festón y pinzas talles 6 a 16|650.0||||||||||||0|0
P|*Pintor verde - talles 2 a 8|350.0||||||||||||0|0
@ -324,16 +323,15 @@ P|*Juego de toallón y toalla de algodón|700.0||||||||||||0|0
P|*Toallón|550.0||||||||||||0|0
P|*Toalla de mano|300.0||||||||||||0|0
P|*Turbante toalla|400.0||||||||||||0|0
P|*Cuellitos polares forrados en angorina, diseños surtidos|350.0||||||||||||0|0
P|*Delantal corto Colectiva en la Olla|450.0||||||||||||0|0
P|*Delantal largo Colectiva en la Olla|600.0||||||||||||0|0
ARTÍCULOS DE MADRES Y FAMILIARES||||||||||||||0|0
P|Pañuelo Madres y Familiares de Detenidos Desaparecidos|50.0||||||||||||0|0
P|Balconera Madres y Familiares de Detenidos Desaparecidos|100.0||||||||||||0|0
P|Pack 1: 1 pin redondo + 1 lapicera + 1 Pañuelo + Pegotines y marcalibros|150||||||||||||0|0
P|Pack 2: 1 Pin redondo + 1 Lapicera + Pegotines y marcalibros|100.0||||||||||||0|0
P|Pack 3: 1 Pañuelo + 2 Lapiceras|100.0||||||||||||0|0
P|Pack 4: 1 Libro La Sal de la Tierra + 1 Pin redondo + 1 Lapicera + Pegotines y Marcalibros|150.0||||||||||||0|0
P|Balconera Madres y Familiares de Detenidos Desaparecidos|100||||||||||||0|0
P|Pack 5: 1 pin redondo + 1 libro La Sal de la Tierra|100.0||||||||||||0|0
P|Pack 6: 1 gorro blanco + 1 pin redondo + pegotines y marcalibros|200.0||||||||||||0|0
P|pacl 7: 1 gorro blanco + 1 libro la sal de la tierra + pegotines y marcalibros|200||||||||||||0|0
P|pack 8: 1 gorro blanco + 1 lapicera + pegotines y marcalibros|200.0||||||||||||0|0
LIBROS||||||||||||||0|0
P|Libro "Raspando la Olla" |250.0||||||||||||0|0
TRANSPORTE, BONOS Y FINANCIAMIENTO SORORO||||||||||||||0|0
@ -342,25 +340,25 @@ B|Campaña solidaria MPS - apoyo a ollas y merenderos|20.0||||||||||||0|0
F|Financiamiento sororo para copa menstrual|20.0||||||||||||0|0
PRODUCTOS DE GESTIÓN MENSTRUAL||||||||||||||0|0
¿Cuántas copas quieren y pueden comprar en el grupo?||||||||||||||0|0
P|Copa menstrual de silicona, ecológica|750.0||||||||||||0|0
P|Copa menstrual de silicona, ecológica|750||||||||||||0|0
¿Cuántas copas quieren adquirir a través del financiamiento sororo?||0||||||||||||0|0
P|Copa menstrual de silicona, ecológica|0.0||||||||||||0|0
P|*Toallita de tela Nocturna "Chúlin"|168.0||||||||||||0|0
P|*Toallita de tela Nocturna "Chúlin"|168||||||||||||0|0
P|*Toallita de tela para Colaless "Chúlin"|133.0||||||||||||0|0
P|*Toallitas de tela para Bombacha "Chúlin"|147||||||||||||0|0
P|*Toallitas de tela para Bombacha "Chúlin"|147.0||||||||||||0|0
P|*Protector Diario de tela "Chúlin"|112.0||||||||||||0|0
P|*Pack 1: 2 protectores diarios + 2 toallitas para bombacha "Chúlin"|462.0||||||||||||0|0
P|*Pack 1: 2 protectores diarios + 2 toallitas para bombacha "Chúlin"|462||||||||||||0|0
P|*Pack 2: 3 protectores diarios "Chúlin"|301.0||||||||||||0|0
P|Ladysoft Clasicas 8un|21||||||||||||0|0
P|Ladysoft Clasicas 8un|21.0||||||||||||0|0
|TOTAL||0|0|0|0|0|0|0|0|0|0|0||0
|||||||||||||||
|||||||||||||||
|||||||||||||||
|Si compras ropa deportiva, túnicas, pintores, copas menstruales y/o remeras de Madres y Familiares recorda indicar talles y/o colores en cada caso||||||||||||||
|||||||||||||||
|||||||||||||||
|||||||||||||||
|PRODUCTOS PARA SELECCIONAR TALLES y/o COLORES|nombre|nombre|nombre|nombre||||||||||
|||||||||||||||
|||nombre|nombre|nombre||||||||||
|*Calza licra de algodon talle S||||||||||||||
|*Calza licra de algodon talle M||||||||||||||
|*Calza licra de algodon talle L||||||||||||||

Can't render this file because it has a wrong number of fields in line 86.

View File

@ -6,7 +6,7 @@
<div class="select">
<select @change="onGDCSelected" v-model="gdc" name="name">
<option :disabled="isDefaultDisabled==1" value=null>Seleccionar</option>
<option v-for="gdc in gdcs" v-text="gdc.nombre + (isAdmin ? '_admin' : '')"
<option v-for="(gdc, index) in gdcs" :key="index" v-text="gdc.nombre + (isAdmin ? '_admin' : '')"
:name="gdc.nombre + (isAdmin ? '_admin' : '')">
</option>
</select>

View File

@ -2,9 +2,16 @@
<div v-show="visible" class="block">
<div class="field">
<label class="label">Contraseña del barrio</label>
<p class="control">
<input required class="input" type="password" name="password" placeholder="Contraseña del barrio">
</p>
<div class="field has-addons">
<div class="control">
<input required class="input" :type="this.passwordType" name="password" placeholder="Contraseña del barrio">
</div>
<div class="control">
<a class="button is-info" @click="togglePassword">
{{ (passwordVisible ? 'Ocultar' : 'Mostrar') + ' contraseña'}}
</a>
</div>
</div>
<p class="help">Si no la sabés, consultá a tus compañerxs.</p>
</div>
<div class="field">
@ -17,10 +24,13 @@
<script>
export default {
name: 'Login',
data() {
return {
visible: false,
gdc: null
gdc: null,
passwordVisible: false,
passwordType: "password",
}
},
mounted() {
@ -28,6 +38,13 @@
this.gdc = gdc;
this.visible = true;
});
},
methods: {
togglePassword() {
if (this.passwordVisible) this.passwordType = "password";
else this.passwordType = "text"
this.passwordVisible = !this.passwordVisible
}
}
}
</script>

View File

@ -2,9 +2,16 @@
<div v-show="visible" class="block">
<div class="field">
<label class="label has-text-white">Contraseña de administración del barrio</label>
<p class="control">
<input required class="input" type="password" name="password" placeholder="Contraseña de admin del barrio">
</p>
<div class="field has-addons">
<div class="control">
<input required class="input" :type="this.passwordType" name="password" placeholder="Contraseña de admin del barrio">
</div>
<div class="control">
<a class="button is-warning" @click="togglePassword">
{{ (passwordVisible ? 'Ocultar' : 'Mostrar') + ' contraseña'}}
</a>
</div>
</div>
<p class="help has-text-white">Si no la sabés, consultá a la comisión informática.</p>
</div>
<div class="field">
@ -17,11 +24,13 @@
<script>
export default {
name: "LoginAdmin.vue",
name: "LoginAdmin",
data() {
return {
visible: false,
gdc: null
gdc: null,
passwordVisible: false,
passwordType: "password",
}
},
mounted() {
@ -29,7 +38,14 @@
this.gdc = gdc;
this.visible = true;
});
}
},
methods: {
togglePassword() {
if (this.passwordVisible) this.passwordType = "password";
else this.passwordType = "text"
this.passwordVisible = !this.passwordVisible
}
}
}
</script>

View File

@ -6,7 +6,7 @@
<div class="select">
<select @change="onRegionSelected" v-model="region">
<option :disabled="isDefaultDisabled===1" value=null>Seleccionar</option>
<option v-for="region in regiones" v-text="region" :name="region"></option>
<option v-for="(region, index) in regiones" :key="index" v-text="region" :name="region"></option>
</select>
</div>
</div>

View File

@ -21,7 +21,6 @@ export default {
},
mounted() {
Event.$on('sync-aprobacion', (unSubpedido) => {
console.log(unSubpedido);
if (this.pedido.id === unSubpedido.id) {
this.pedido = unSubpedido
}

View File

@ -1,10 +1,8 @@
<template>
<button class="button" :class="pedido.aprobado ? 'is-danger' : 'is-success'" @click="toggleAprobacion">
<span class="icon is-small">
<i class="fas" :class="pedido.aprobado ? 'fa-times' : 'fa-check'"></i>
</span>
<span>{{ mensaje }}</span>
</button>
<div class="field">
<input :id="'switch'+this.pedido.id" type="checkbox" name="switchRoundedSuccess" class="switch is-rounded is-success" :checked="pedido.aprobado" @change="toggleAprobacion">
<label :for="'switch'+this.pedido.id"><span class="is-hidden-mobile">{{ mensaje }}</span></label>
</div>
</template>
<script>
@ -18,7 +16,7 @@ export default {
},
computed: {
mensaje: function () {
return this.pedido.aprobado ? "Desaprobar" : "Aprobar"
return this.pedido.aprobado ? "Aprobado" : "No aprobado"
}
},
methods: {

View File

@ -17,7 +17,7 @@
<div v-if="subpedidosExistentes.length" class="block">
<label class="label">Si ya comenzaste a hacer tu pedido este mes, elegilo en esta lista:</label>
<p class="help">Podés seguir escribiendo en el campo de arriba para refinar la búsqueda.</p>
<div class="columns is-mobile" v-for="(subpedidoExistente, index) in subpedidosExistentes" :class="{'has-background-grey-lighter': index % 2}">
<div class="columns is-mobile" v-for="(subpedidoExistente, index) in subpedidosExistentes" :class="{'has-background-grey-lighter': index % 2}" :key="index">
<div class="column is-half-mobile is-two-thirds-desktop is-two-thirds-tablet">
<p style="padding-top: calc(.5em - 1px); margin-bottom: .5rem" v-text="subpedidoExistente.nombre"></p>
</div>

View File

@ -23,7 +23,7 @@
<tr>
<th>Núcleo</th>
<th><abbr title="Total a Pagar">Total $</abbr></th>
<th><abbr title="Aprobacion">Aprobación</abbr></th>
<th class="is-1"><abbr title="Aprobacion">Aprobación</abbr></th>
</tr>
</thead>
<tfoot>
@ -52,7 +52,7 @@ export default {
components: {SubpedidoRow},
data() {
return {
gdc: null,
gdc: 0,
subpedidos: []
}
},
@ -89,6 +89,6 @@ export default {
}
</script>
<style scoped>
<style>
</style>

View File

@ -4,6 +4,9 @@
// Variables
@import 'variables';
@import 'bulma';
@import '~bulma-switch';
main.has-top-padding {
padding-top: 4.5rem !important;
}
@ -33,4 +36,28 @@ main.chisma-abierta {
.container {
max-height: 100% !important;
}
/*
Author: Aseem Lalfakawma <alalfakawma.github.io>
This SCSS mixin will allow sizing of table columns in Bulma CSS Framework.
The Bulma framework does not support this yet, this small code snippet fixes this.
USAGE:
* Should be applied on TH element, it controls all the columns under it *
The class should be "is-#",
is-1 will give the first widthamount, is-2 will give the second.
Eg. The code below shows the widthAmounts as (1, 2.5, 3, 4 , 5, 6, 7)
When typing <th class="is-2">, the width will be 2.5em, as the second value in widthAmounts array is 2.5
*/
$widthAmounts: (15); // Just add the numbers here, you can use points too.
$widthUnit: "em"; // Add the unit here (rem|em|px|%)
@each $width in $widthAmounts {
$i: index($widthAmounts, $width);
@media only screen and (min-width: 768px) {
.table thead th.is-#{$i} {
width: #{$width}#{$widthUnit} !important;
}
}
}

View File

@ -21,10 +21,10 @@
Contraseña incorrecta, intentalo nuevamente.
</div>
@enderror
<region-select admin="true"></region-select>
<region-select v-bind:admin="true"></region-select>
<form method="post" action="login">
@csrf
<barrio-select admin="true"></barrio-select>
<barrio-select v-bind:admin="true"></barrio-select>
<login-admin></login-admin>
</form>
</div>

View File

@ -12,7 +12,6 @@
<!-- Fonts -->
<script src="https://kit.fontawesome.com/9235d1c676.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
@yield('stylesheets')

View File

@ -25,8 +25,6 @@ Route::get('/productos', 'ProductoController@index')->name('productos.index');
Route::get('/admin', 'AdminController@show')->name('admin_login.show');
Route::get('/admin/pedidos', 'AdminController@index')->name('admin_login.index');
Route::get('/admin/obtener_sesion', function() {
$sesion = [
'gdc' => session("admin_gdc")
@ -34,11 +32,12 @@ Route::get('/admin/obtener_sesion', function() {
return $sesion;
})->name('admin_obtener_sesion');
Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPlanillasAPdf');
Route::get('/admin/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
Route::middleware(['auth', 'admin'])->group( function () {
//Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPlanillasAPdf');
Route::get('/admin/pedidos', 'AdminController@index')->name('admin_login.index');
Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPlanillasAPdf');
Route::get('/admin/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
});
Route::middleware('auth')->group( function() {