En el momento de Agrupar documentos, necesitamos tener la opción de ordenar los documentos agrupados en el nuevo documento, por "fecha" o por "numero2" para documentos de venta, o "numproveedor" para documentos de compra.
Modificar la "function loadDocuments()" de DocumentStitcher.php, añadiendo un selector en DocumentStitcher.html.twig, y en función de lo seleccionado, utilizar el "sort by date" o "sort by number2//numproveedor".
Hay que incluir en DocumentStitcher.html.twig esto:
<div class="col-lg-2 col-sm-6 mb-2">
<select name="sortdocs" class="form-control">
<option value="true">{{ trans('sort-docs-by-date') }}</option>
{% if attribute(fsc.documents[0], 'numproveedor') is not none %}
<option value="false">{{ trans('sort-docs-by-numsupplier') }}</option>
{% else %}
<option value="false">{{ trans('sort-docs-by-number2') }}</option>
{% endif %}
</select>
</div>
Hay que cambiar en DocumentStitcher.php esto:
// sort by date
uasort($this->documents, function ($doc1, $doc2) {
if (strtotime($doc1->fecha . ' ' . $doc1->hora) > strtotime($doc2->fecha . ' ' . $doc2->hora)) {
return 1;
} elseif (strtotime($doc1->fecha . ' ' . $doc1->hora) < strtotime($doc2->fecha . ' ' . $doc2->hora)) {
return -1;
}
return 0;
});
por esto otro:
if ('true' === $this->request->request->get('sortdocs', '')) {
// sort by date
uasort($this->documents, function ($doc1, $doc2) {
if (strtotime($doc1->fecha . ' ' . $doc1->hora) > strtotime($doc2->fecha . ' ' . $doc2->hora)) {
return 1;
} elseif (strtotime($doc1->fecha . ' ' . $doc1->hora) < strtotime($doc2->fecha . ' ' . $doc2->hora)) {
return -1;
}
return 0;
});
} else {
// sort by number2 or by numproveedor
uasort ($this->documents, function ($doc1, $doc2) {
if (isset($doc1->numero2)) {
return strnatcmp($doc1->numero2, $doc2->numero2);
} else {
return strnatcmp($doc1->numproveedor, $doc2->numproveedor);
}
});
}
Además de incluir en las traducciones los siguientes términos:
No hay plazo máximo para implementar esto. Si es interesante su implementación, puedo enviar PR, ya que lo tengo funcionando.
Esto es una sugerencia a debatir. Está abierta a comentarios, votación y debate en la reunión semanal. Si se aprueba pasará a estado pendiente.