Untitled
unknown
dart
a year ago
5.8 kB
6
Indexable
import 'package:dspyme_gesloc/controllers/utilidades.dart';
import 'package:dspyme_gesloc/models/cliente.dart';
import 'package:hive/hive.dart';
part 'articulo.g.dart';
@HiveType(typeId: 1, adapterName: "ArticuloAdapter")
class Articulo {
Articulo(
{required this.clave,
required this.codigo,
this.nombre = "",
this.precio = 0,
this.descrip = "",
this.codbarra = "",
this.codarti = "",
this.tipoArticulo,
this.codigoFamilia,
this.stock = 0,
this.baja = false,
this.pvp = 0,
this.tipoIva,
this.codean = "",
this.codigoProveedor,
this.objetoProveedor,
this.coste = 0,
this.porcentajeMargen = 0,
this.fechaSincronizacion});
@HiveField(0)
String clave;
@HiveField(1)
int codigo;
@HiveField(2)
String nombre;
@HiveField(3)
double precio;
@HiveField(4)
String descrip;
@HiveField(5)
String codbarra;
@HiveField(6)
String codarti;
@HiveField(7)
int? codigoFamilia;
@HiveField(8)
double stock;
/// si es contenedor, tarea o producto
@HiveField(9)
int? tipoArticulo;
/// Utilizado en tabla web
@HiveField(10)
bool baja;
@HiveField(11)
double pvp;
@HiveField(12)
int? tipoIva;
@HiveField(13)
String codean;
@HiveField(14)
double coste;
@HiveField(15)
double porcentajeMargen;
@HiveField(16)
int? codigoProveedor;
@HiveField(17)
Cliente? objetoProveedor;
/// Modificado
@HiveField(18)
DateTime? fechaSincronizacion;
/// Utilizado por select_dialog en vistaweb
/// TODO check si se utiliza
@override
String toString() => nombre;
factory Articulo.fromJson(Map<String, dynamic> json) {
try {
Articulo articulo = Articulo(
clave: json["Clave"],
codigo: json["Codigo"],
);
try {
articulo.precio = json["Precio"] == null
? 0.0
: double.parse(json["Precio"].toString());
} catch (e) {
print("Error assigning precio: $e");
}
try {
articulo.nombre = json["Nombre"] ?? "";
} catch (e) {
print("Error assigning nombre: $e");
}
try {
articulo.descrip = json["Texto"] ?? "";
} catch (e) {
print("Error assigning Texto: $e");
}
try {
articulo.codbarra = json["Codbarra"] ?? "";
} catch (e) {
print("Error assigning Codbarra: $e");
}
try {
articulo.codarti = json["Codarti"] ?? "";
} catch (e) {
print("Error assigning Codarti: $e");
}
try {
articulo.tipoArticulo = json["Tipoarticulo"];
} catch (e) {
print("Error assigning Tipoarticulo: $e");
}
try {
articulo.codigoFamilia = json["Familia"];
} catch (e) {
print("Error assigning Familia: $e");
}
try {
articulo.stock = json["Stock"] == null
? 0.0
: double.parse(json["Stock"].toString());
} catch (e) {
print("Error assigning Stock: $e");
}
try {
articulo.baja = json["Baja"] == 1 ? true : false;
} catch (e) {
print("Error assigning baja: $e");
}
try {
articulo.pvp =
json["Pvp"] == null ? 0.0 : double.parse(json["Pvp"].toString());
} catch (e) {
print("Error assigning Pvp: $e");
}
try {
articulo.tipoIva = json["Tipoiva"];
} catch (e) {
print("Error assigning tipoiva: $e");
}
try {
articulo.codean = json["Codean"] ?? "";
} catch (e) {
print("Error assigning Codean: $e");
}
try {
articulo.codigoProveedor = json["Provee"];
} catch (e) {
print("Error assigning codigoProveedor: $e");
}
try {
articulo.coste = json["Coste"] == null
? 0.0
: double.parse(json["Coste"].toString());
} catch (e) {
print("Error assigning coste: $e");
}
try {
articulo.porcentajeMargen = json["Margen"] == null
? 0.0
: double.parse(json["Margen"].toString());
} catch (e) {
print("Error assigning margen: $e");
}
try {
articulo.fechaSincronizacion =
Utilidades.parseFecha(json['Modificado']) ?? DateTime.now();
} catch (e) {
print("Error assigning fechaSincronizacion: $e");
}
return articulo;
} catch (e) {
print("Error fromJson Articulo: $e");
return Articulo(
clave: json["Clave"],
codigo: json["Codigo"],
);
}
}
Map<String, dynamic> toJson() {
try {
return {
"Clave": clave,
"Codigo": codigo,
"Nombre": nombre,
"Precio": precio,
"Texto": descrip,
"Codbarra": codbarra,
"Codarti": codarti,
"Tipoarticulo": tipoArticulo,
"Familia": codigoFamilia,
"Stock": stock,
"Baja": baja ? 1 : 0,
"Pvp": pvp,
"Tipoiva": tipoIva,
"Codean": codean,
"Coste": coste,
"Margen": porcentajeMargen,
"Provee": codigoProveedor,
"Modificado": fechaSincronizacion?.toIso8601String()
};
} catch (e) {
throw Exception("Error toJson Articulo: $e");
}
}
static List<String> camposBasicos = ["Clave", "Codigo", "Nombre", "Descrip"];
static String? textoArticulo(Articulo? articulo) {
if (articulo != null) {
return "${articulo.codarti.trim()} (${articulo.nombre.trim()})";
}
return null;
}
}
Editor is loading...
Leave a Comment