Para hacer un between en Laravel utilizando Eloquententre un rango de fechas, lo podemos hacer de la siguiente manera:
//creams 2 objetos tipo carbon con las fechas
$f1 = new \Carbon\Carbon("01-01-2018");
$f2 = new \Carbon\Carbon("31-01-2018");
//aplicamos Eloquent
$lst=MiModelo::where("date_start",">=",$f1)
->where("date_end","<=",$f2)
->get();
El siguiente código sirve para que puedas bloquear desde una web por medio de javascript el botón de regresar que tiene el navegador.
El código funciona con Chrome, Firefox, Edge, Opera (quizá con otros navegador, pero con estos lo probe).
Solo basta que pongan las 3 líneas siguientes al finalizar de cargar su DOM.
window.location.hash="no-back-button";
window.location.hash="Again-No-back-button";//esta linea es necesaria para chrome
window.onhashchange=function(){window.location.hash="no-back-button";}
Con este curso de 4 videos te enseño como crear el archivo pdf a partir de un XML ya timbrado con C# .Net.
Te invito a que te suscribas a mi canal de youtube para mas videos interesantes sobre programación.
La ventaja que tiene ese curso, es que haremos el archivo pdf a partir de un archivo HTML, esto es útil para cuando el cliente pide muchos cambios en su formato (es más fácil capacitarlo a que el mismo mueva el archivo html que capacitarlo en crystal reports por ejemplo).
Me enfoco para crear el archivo PDF con un proyecto simple de consola, para que así veas que puedes implementarlo en cualquier tipo de proyecto de C# .Net: mvc .net, asp, Windows form, WPF, WCF etc.
1.- En el primer video nos enfocaremos a obtener la información del xml 3.3 en un objeto, y para ello te muestro como es posible hacer el parseo de los datos del xml para posterior poder manipularlos.
2.- En este segundo video nos centraremos en convertir un archivo html a pdf, y de igual manera te mostrare como ejecutar Razor para que nuestro html sea manipulado dinámicamente (no importa que el proyecto no sea web, yo te muestro como hacerlo).
3.- En este video te muestro como crear el código QR como el SAT lo requiere.
4.- En este video, te muestro como hacer el archivo PDF conforme al anexo 20, al igual veremos cómo crear el texto de la cantidad total de la factura con letra.
5.- Por último, te enseño como puedes navegar a elementos mas profundos, en este caso los impuestos, y de esta manera puedas representarlos en tu pdf.
Con estos 5 videos seras capaz de crear el archivo PDF sin problemas.
En este cuarto y último video de este curso veremos como crear el pdf a partir del anexo 20, a parte veremos como introducir la cantidad total con letra.
En este segundo video te mostrare una forma fácil de crear un archivo PDF a partir de un archivo HTML, y con ayuda de Razor poder incrustar nuestro objeto Comprobante obtenido en el primer video.
A continuación con un ejemplo te muestro como es posible hacerlo:
EntityDB db= new EntityDB();
var lst = from d in db.tabla.ToList() //es importante hacerlo lista
select new TablaViewModel
{
id = d.id,
//campo es string por lo cual
//nuestra función delegada regresara igual string
campo = (new Func<string>(() => {
try {
//utilizamos if
if(d.alguncampo==1){
return "Activo";
}else{
return "Inactivo";
}
}
catch {
//si ocurre un error
return "Error";
}
}
)
)()
};
De esta manera podemos manipular la información para lograr el resultado deseado.
Para convertir un archivo XML ya timbrado a un objeto en C# haremos uso de la deserialización.
Lo primero que debes hacer es descargar las 2 clases que están debajo, estas clases fueron generadas por medio de los xsd del SAT (Como convertir un archivo xsd a clases).
Una vez que tengas estas clases debes hacer lo siguiente (comento línea a línea para que entiendas el flujo):
//crear un objeto el cual tendrá el resultado final, este objeto es el principal
Comprobante oComprobante;
//pon la ruta donde tienes tu archivo XML Timbrado
string path = @"C:\miXML.xml";
//creamos un objeto XMLSerializer para deserializar
XmlSerializer oSerializer = new XmlSerializer(typeof(Comprobante));
//creamos un flujo el cual recibe nuestro xml
using (StreamReader reader= new StreamReader(path))
{
//aqui deserializamos
oComprobante = (Comprobante)oSerializer.Deserialize(reader);
//Deserializamos el complemento timbre fiscal
foreach (var oComplemento in oComprobante.Complemento)
{
foreach (var oComplementoInterior in oComplemento.Any)
{
//si el complemento es TimbreFiscalDigital lo deserializamos
if (oComplementoInterior.Name.Contains("TimbreFiscalDigital")) {
//Objeto para aplicar ahora la deserialización del complemento timbre
XmlSerializer oSerializerComplemento = new XmlSerializer(typeof(TimbreFiscalDigital));
//creamos otro flujo para el complemento
using (var readerComplemento = new StringReader(oComplementoInterior.OuterXml))
{
//y por ultimo deserializamos el complemento
oComprobante.TimbreFiscalDigital =
(TimbreFiscalDigital)oSerializerComplemento.Deserialize(readerComplemento);
}
}
}
}
}