Merge pull request #35611 from rohitwaghchaure/fix-dont-allow-to-create-reposting-entry-for-closing-stock-balance

fix: don't allow to make reposting entry for closing stock balance period
diff --git a/.eslintrc b/.eslintrc
index 276d6ff..12fefa0 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -154,7 +154,6 @@
 		"before": true,
 		"beforeEach": true,
 		"onScan": true,
-		"html2canvas": true,
 		"extend_cscript": true,
 		"localforage": true
 	}
diff --git a/.semgrepignore b/.semgrepignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.semgrepignore
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index c9c9c9c..3e418c4 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -3,7 +3,7 @@
 
 import frappe
 
-__version__ = "14.0.0-dev"
+__version__ = "15.0.0-dev"
 
 
 def get_default_company(user=None):
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/unverified/co_vauxoo_mx_chart_template.json b/erpnext/accounts/doctype/account/chart_of_accounts/unverified/co_vauxoo_mx_chart_template.json
deleted file mode 100644
index aa7d551..0000000
--- a/erpnext/accounts/doctype/account/chart_of_accounts/unverified/co_vauxoo_mx_chart_template.json
+++ /dev/null
@@ -1,3008 +0,0 @@
-{
-    "country_code": "co",
-    "name": "Colombia - Unique Account Chart - PUC",
-    "tree": {
-        "ACTIVO": {
-            "DEUDORES": {
-                "ANTICIPO DE IMPUESTOS Y CONTRIBUCIONES O SALDOS A FAVOR": {
-                    "ANTICIPO DE IMPUESTOS DE INDUSTRIA Y COMERCIO": {},
-                    "ANTICIPO DE IMPUESTOS DE RENTA Y COMPLEMENTARIOS": {},
-                    "CONTRIBUCIONES": {},
-                    "IMPUESTO A LAS VENTAS RETENIDO": {
-                        " IMPUESTO A LAS VENTAS RETENIDO": {}
-                    },
-                    "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {},
-                    "IMPUESTOS DESCONTABLES": {},
-                    "OTROS": {},
-                    "RETENCION EN LA FUENTE": {},
-                    "SOBRANTES EN LIQUIDACION PRIVADA DE IMPUESTOS": {}
-                },
-                "ANTICIPOS Y AVANCES": {
-                    "A AGENTES": {
-                        "A AGENTES": {}
-                    },
-                    "A CONCESIONARIOS": {},
-                    "A CONTRATISTAS": {},
-                    "A PROVEEDORES": {},
-                    "A TRABAJADORES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "DE ADJUDICACIONES": {},
-                    "OTROS": {}
-                },
-                "APORTES POR COBRAR": {},
-                "CLIENTES": {
-                    "DEL EXTERIOR": {},
-                    "DEUDORES DEL SISTEMA": {},
-                    "NACIONALES": {
-                        "DEUDORES CLIENTES NACIONALES": {}
-                    }
-                },
-                "CUENTAS CORRIENTES COMERCIALES": {
-                    "ACCIONISTAS O SOCIOS": {},
-                    "CASA MATRIZ": {},
-                    "COMPANIAS VINCULADAS": {},
-                    "OTRAS": {},
-                    "PARTICULARES": {}
-                },
-                "CUENTAS DE OPERACION CONJUNTA": {},
-                "CUENTAS POR COBRAR A CASA MATRIZ": {
-                    "PAGOS A NOMBRE DE CASA MATRIZ": {},
-                    "PRESTAMOS": {},
-                    "VALORES RECIBIDOS POR CASA MATRIZ": {},
-                    "VENTAS": {}
-                },
-                "CUENTAS POR COBRAR A DIRECTORES": {},
-                "CUENTAS POR COBRAR A SOCIOS Y ACCIONISTAS": {
-                    "A ACCIONISTAS": {
-                        "ALFONSO SOTO": {},
-                        "DOUGLAS CANELON": {},
-                        "LIGIA MARINA CANELON CASTELLANOS": {}
-                    },
-                    "A SOCIOS": {
-                        "A SOCIOS": {}
-                    }
-                },
-                "CUENTAS POR COBRAR A TRABAJADORES": {
-                    "CALAMIDAD DOMESTICA": {},
-                    "EDUCACION": {},
-                    "MEDICOS, ODONTOLOGICOS Y SIMILARES": {},
-                    "OTROS": {},
-                    "RESPONSABILIDADES": {},
-                    "VEHICULOS": {},
-                    "VIVIENDA": {}
-                },
-                "CUENTAS POR COBRAR A VINCULADOS ECONOMICOS": {
-                    "FILIALES": {},
-                    "SUBSIDIARIAS": {},
-                    "SUCURSALES": {}
-                },
-                "DEPOSITOS": {
-                    "EN GARANTIA": {},
-                    "OTROS": {},
-                    "PARA ADQUISICION DE ACCIONES, CUOTAS O DERECHOS SOCIALES": {},
-                    "PARA CONTRATOS": {},
-                    "PARA IMPORTACIONES": {},
-                    "PARA JUICIOS EJECUTIVOS": {},
-                    "PARA RESPONSABILIDADES": {},
-                    "PARA SERVICIOS": {}
-                },
-                "DERECHOS DE RECOMPRA DE CARTERA NEGOCIADA": {},
-                "DEUDAS DE DIFICIL COBRO": {},
-                "DEUDORES VARIOS": {
-                    "COMISIONISTAS DE BOLSAS": {},
-                    "CUENTAS POR COBRAR DE TERCEROS": {},
-                    "DEPOSITARIOS": {},
-                    "FONDO DE INVERSION": {},
-                    "FONDOS DE INVERSION SOCIAL": {},
-                    "OTROS": {},
-                    "PAGOS POR CUENTA DE TERCEROS": {}
-                },
-                "INGRESOS POR COBRAR": {
-                    "ARRENDAMIENTOS": {},
-                    "CERT POR COBRAR": {},
-                    "COMISIONES": {},
-                    "DIVIDENDOS Y/O PARTICIPACIONES": {},
-                    "HONORARIOS": {},
-                    "INTERESES": {},
-                    "OTROS": {
-                        "Generica a Cobrar": {}
-                    },
-                    "SERVICIOS": {}
-                },
-                "PRESTAMOS A PARTICULARES": {
-                    "CON GARANTIA PERSONAL": {},
-                    "CON GARANTIA REAL": {}
-                },
-                "PROMESAS DE COMPRA VENTA": {
-                    "DE BIENES RAICES": {},
-                    "DE FLOTA Y EQUIPO AEREO": {},
-                    "DE FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "DE FLOTA Y EQUIPO FERREO": {},
-                    "DE FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "DE MAQUINARIA Y EQUIPO": {},
-                    "DE OTROS BIENES": {},
-                    "DE SEMOVIENTES": {}
-                },
-                "PROVISIONES": {
-                    "ANTICIPOS Y AVANCES": {},
-                    "CLIENTES": {},
-                    "CUENTAS CORRIENTES COMERCIALES": {},
-                    "CUENTAS DE OPERACION CONJUNTA": {},
-                    "CUENTAS POR COBRAR A CASA MATRIZ": {},
-                    "CUENTAS POR COBRAR A SOCIOS Y ACCIONISTAS": {},
-                    "CUENTAS POR COBRAR A TRABAJADORES": {},
-                    "CUENTAS POR COBRAR A VINCULADOS ECONOMICOS": {},
-                    "DEPOSITOS": {},
-                    "DERECHOS DE RECOMPRA DE CARTERA NEGOCIADA": {},
-                    "DEUDORES VARIOS": {},
-                    "INGRESOS POR COBRAR": {},
-                    "PRESTAMOS A PARTICULARES": {},
-                    "PROMESAS DE COMPRAVENTA": {},
-                    "RECLAMACIONES": {},
-                    "RETENCION SOBRE CONTRATOS": {}
-                },
-                "RECLAMACIONES": {
-                    "A COMPANIAS ASEGURADORAS": {},
-                    "A TRANSPORTADORES": {},
-                    "OTRAS": {},
-                    "POR TIQUETES AEREOS": {}
-                },
-                "RETENCION SOBRE CONTRATOS": {
-                    "DE CONSTRUCCION": {},
-                    "DE PRESTACION DE SERVICIOS": {},
-                    "IMPUESTO A LAS VENTAS RETENIDO": {
-                        "IMPUESTO A LAS VENTAS RETENIDO": {}
-                    },
-                    "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {
-                        "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {}
-                    },
-                    "OTROS": {
-                        "OTROS": {}
-                    },
-                    "RETEFTE SOBRE COMPRA DE LUBRICANTES": {
-                        "RETEFTE SOBRE COMPRA DE LUBRICANTES": {}
-                    }
-                }
-            },
-            "DIFERIDOS": {
-                "AMORTIZACION ACUMULADA": {
-                    "AJUSTES POR INFLACION": {},
-                    "COSTOS DE EXPLORACION POR AMORTIZAR": {},
-                    "COSTOS DE EXPLOTACION Y DESARROLLO": {}
-                },
-                "CARGOS DIFERIDOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CONCURSOS Y LICITACIONES": {},
-                    "CONTRIBUCIONES Y AFILIACIONES": {},
-                    "CUBIERTERIA": {},
-                    "DOTACION Y SUMINISTRO A TRABAJADORES": {},
-                    "ELEMENTOS DE ASEO Y CAFETERIA": {},
-                    "ELEMENTOS DE ROPERIA Y LENCERIA": {},
-                    "ENTRENAMIENTO DE PERSONAL": {},
-                    "ESTUDIOS, INVESTIGACIONES Y PROYECTOS": {},
-                    "FERIAS Y EXPOSICIONES": {},
-                    "IMPUESTO DE RENTA DIFERIDO ?DEBITOS? POR DIFERENCIAS TEMPORALES": {},
-                    "INSTRUMENTAL QUIRURGICO": {},
-                    "LICENCIAS": {
-                        "LICENCIAS": {}
-                    },
-                    "LOZA Y CRISTALERIA": {},
-                    "MEJORAS A PROPIEDADES AJENAS": {},
-                    "MOLDES Y TROQUELES": {},
-                    "ORGANIZACION Y PREOPERATIVOS": {},
-                    "OTROS": {},
-                    "PLATERIA": {},
-                    "PROGRAMAS PARA COMPUTADOR (SOFTWARE)": {},
-                    "PUBLICIDAD, PROPAGANDA Y PROMOCION": {},
-                    "REMODELACIONES": {},
-                    "UTILES Y PAPELERIA": {
-                        "UTILES Y PAPELERIA": {}
-                    }
-                },
-                "CARGOS POR CORRECCION MONETARIA DIFERIDA": {},
-                "COSTOS DE EXPLORACION POR AMORTIZAR": {
-                    "AJUSTES POR INFLACION": {},
-                    "OTROS COSTOS DE EXPLORACION": {},
-                    "POZOS NO COMERCIALES": {},
-                    "POZOS SECOS": {}
-                },
-                "COSTOS DE EXPLOTACION Y DESARROLLO": {
-                    "AJUSTES POR INFLACION": {},
-                    "FACILIDADES DE PRODUCCION": {},
-                    "PERFORACION Y EXPLOTACION": {},
-                    "PERFORACIONES CAMPOS EN DESARROLLO": {},
-                    "SERVICIO A POZOS": {}
-                },
-                "GASTOS PAGADOS POR ANTICIPADO": {
-                    "ARRENDAMIENTOS": {},
-                    "BODEGAJES": {},
-                    "COMISIONES": {},
-                    "HONORARIOS": {},
-                    "INTERESES": {},
-                    "MANTENIMIENTO EQUIPOS": {},
-                    "OTROS": {},
-                    "SEGUROS Y FIANZAS": {},
-                    "SERVICIOS": {},
-                    "SUSCRIPCIONES": {}
-                }
-            },
-            "DISPONIBLE": {
-                "BANCOS": {
-                    "MONEDA EXTRANJERA": {},
-                    "MONEDA NACIONAL": {}
-                },
-                "CAJA": {
-                    "CAJA GENERAL": {
-                        "CAJA GENERAL": {}
-                    },
-                    "CAJAS MENORES": {
-                        "CAJAS MENORES": {}
-                    },
-                    "MONEDA EXTRANJERA": {}
-                },
-                "CUENTAS DE AHORRO": {
-                    "BANCOS": {},
-                    "CORPORACIONES DE AHORRO Y VIVIENDA": {},
-                    "ORGANISMOS COOPERATIVOS FINANCIEROS": {}
-                },
-                "FONDOS": {
-                    "DE AMORTIZACION MONEDA EXTRANJERA": {},
-                    "DE AMORTIZACION MONEDA NACIONAL": {},
-                    "ESPECIALES MONEDA EXTRANJERA": {},
-                    "ESPECIALES MONEDA NACIONAL": {},
-                    "ROTATORIOS MONEDA EXTRANJERA": {},
-                    "ROTATORIOS MONEDA NACIONAL": {}
-                },
-                "REMESAS EN TRANSITO": {
-                    "MONEDA EXTRANJERA": {},
-                    "MONEDA NACIONAL": {}
-                }
-            },
-            "INTANGIBLES": {
-                "CONCESIONES Y FRANQUICIAS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CONCESIONES": {},
-                    "FRANQUICIAS": {}
-                },
-                "CREDITO MERCANTIL": {
-                    "ADQUIRIDO O COMPRADO": {},
-                    "AJUSTES POR INFLACION": {},
-                    "FORMADO O ESTIMADO": {}
-                },
-                "DEPRECIACION Y/O AMORTIZACION ACUMULADA": {
-                    "AJUSTES POR INFLACION": {},
-                    "CONCESIONES Y FRANQUICIAS": {},
-                    "CREDITO MERCANTIL": {},
-                    "DERECHOS": {},
-                    "KNOW HOW": {},
-                    "LICENCIAS": {},
-                    "MARCAS": {},
-                    "PATENTES": {}
-                },
-                "DERECHOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE EXHIBICION - PELICULAS": {},
-                    "DERECHOS DE AUTOR": {},
-                    "EN BIENES RECIBIDOS EN ARRENDAMIENTO FINANCIERO (LEASING)": {},
-                    "EN FIDEICOMISOS DE ADMINISTRACION": {},
-                    "EN FIDEICOMISOS DE GARANTIA": {},
-                    "EN FIDEICOMISOS INMOBILIARIOS": {},
-                    "OTROS": {},
-                    "PUESTO DE BOLSA": {}
-                },
-                "KNOW HOW": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "LICENCIAS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "MARCAS": {
-                    "ADQUIRIDAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "FORMADAS": {}
-                },
-                "PATENTES": {
-                    "ADQUIRIDAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "FORMADAS": {}
-                },
-                "PROVISIONES": {}
-            },
-            "INVENTARIOS": {
-                "BIENES RAICES PARA LA VENTA": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "CONTRATOS EN EJECUCION": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "CULTIVOS EN DESARROLLO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "ENVASES Y EMPAQUES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "INVENTARIOS EN TRANSITO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "MATERIALES, REPUESTOS Y ACCESORIOS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "MATERIAS PRIMAS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "MERCANCIAS NO FABRICADAS POR LA EMPRESA": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "OBRAS DE CONSTRUCCION EN CURSO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "OBRAS DE URBANISMO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "PLANTACIONES AGRICOLAS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "PRODUCTOS EN PROCESO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "PRODUCTOS TERMINADOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "PRODUCTOS AGRICOLAS Y FORESTALES": {},
-                    "PRODUCTOS DE PESCA": {},
-                    "PRODUCTOS EXTRAIDOS Y/O PROCESADOS": {},
-                    "PRODUCTOS MANUFACTURADOS": {},
-                    "SUBPRODUCTOS": {}
-                },
-                "PROVISIONES": {
-                    "LIFO": {},
-                    "PARA DIFERENCIA DE INVENTARIO FISICO": {},
-                    "PARA OBSOLESCENCIA": {},
-                    "PARA PERDIDAS DE INVENTARIOS": {}
-                },
-                "SEMOVIENTES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "TERRENOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "POR URBANIZAR": {},
-                    "URBANIZADOS POR CONSTRUIR": {}
-                }
-            },
-            "INVERSIONES": {
-                "ACCIONES": {
-                    "ACTIVIDAD FINANCIERA": {},
-                    "ACTIVIDADES INMOBILIARIAS, EMPRESARIALES Y DE ALQUILER": {},
-                    "AGRICULTURA, GANADERIA, CAZA Y SILVICULTURA": {},
-                    "AJUSTES POR INFLACION": {},
-                    "COMERCIO AL POR MAYOR Y AL POR MENOR": {},
-                    "CONSTRUCCION": {},
-                    "ENSENANZA": {},
-                    "EXPLOTACION DE MINAS Y CANTERAS": {},
-                    "HOTELES Y RESTAURANTES": {},
-                    "INDUSTRIA MANUFACTURERA": {},
-                    "OTRAS ACTIVIDADES DE SERVICIOS COMUNITARIOS, SOCIALES Y PERSONALES": {},
-                    "PESCA": {},
-                    "SERVICIOS SOCIALES Y DE SALUD": {},
-                    "SUMINISTRO DE ELECTRICIDAD, GAS Y AGUA": {},
-                    "TRANSPORTE, ALMACENAMIENTO Y COMUNICACIONES": {}
-                },
-                "ACEPTACIONES BANCARIAS O FINANCIERAS": {
-                    "BANCOS COMERCIALES": {},
-                    "COMPANIAS DE FINANCIAMIENTO COMERCIAL": {},
-                    "CORPORACIONES FINANCIERAS": {},
-                    "OTRAS": {}
-                },
-                "BONOS": {
-                    "BONOS CONVERTIBLES EN ACCIONES": {},
-                    "BONOS ORDINARIOS": {},
-                    "BONOS PUBLICOS MONEDA EXTRANJERA": {},
-                    "BONOS PUBLICOS MONEDA NACIONAL": {},
-                    "OTROS": {}
-                },
-                "CEDULAS": {
-                    "CEDULAS DE CAPITALIZACION": {},
-                    "CEDULAS DE INVERSION": {},
-                    "CEDULAS HIPOTECARIAS": {},
-                    "OTRAS": {}
-                },
-                "CERTIFICADOS": {
-                    "CERTIFICADOS CAFETEROS VALORIZABLES": {},
-                    "CERTIFICADOS DE AHORRO DE VALOR CONSTANTE (CAVC)": {},
-                    "CERTIFICADOS DE CAMBIO": {},
-                    "CERTIFICADOS DE DEPOSITO A TERMINO (CDT)": {},
-                    "CERTIFICADOS DE DEPOSITO DE AHORRO": {},
-                    "CERTIFICADOS DE DESARROLLO TURISTICO": {},
-                    "CERTIFICADOS DE INVERSION FORESTAL (CIF)": {},
-                    "CERTIFICADOS DE REEMBOLSO TRIBUTARIO (CERT)": {},
-                    "CERTIFICADOS ELECTRICOS VALORIZABLES (CEV)": {},
-                    "OTROS": {}
-                },
-                "CUENTAS EN PARTICIPACION": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "CUOTAS O PARTES DE INTERES SOCIAL": {
-                    "ACTIVIDAD FINANCIERA": {},
-                    "ACTIVIDADES INMOBILIARIAS, EMPRESARIALES Y DE ALQUILER": {},
-                    "AGRICULTURA, GANADERIA, CAZA Y SILVICULTURA": {},
-                    "AJUSTES POR INFLACION": {},
-                    "COMERCIO AL POR MAYOR Y AL POR MENOR": {},
-                    "CONSTRUCCION": {},
-                    "ENSENANZA": {},
-                    "EXPLOTACION DE MINAS Y CANTERAS": {},
-                    "HOTELES Y RESTAURANTES": {},
-                    "INDUSTRIA MANUFACTURERA": {},
-                    "OTRAS ACTIVIDADES DE SERVICIOS COMUNITARIOS, SOCIALES Y PERSONALES": {},
-                    "PESCA": {},
-                    "SERVICIOS SOCIALES Y DE SALUD": {},
-                    "SUMINISTRO DE ELECTRICIDAD, GAS Y AGUA": {},
-                    "TRANSPORTE, ALMACENAMIENTO Y COMUNICACIONES": {}
-                },
-                "DERECHOS DE RECOMPRA DE INVERSIONES NEGOCIADAS (REPOS)": {
-                    "ACCIONES": {},
-                    "ACEPTACIONES BANCARIAS O FINANCIERAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "BONOS": {},
-                    "CEDULAS": {},
-                    "CERTIFICADOS": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "OTROS": {},
-                    "PAPELES COMERCIALES": {},
-                    "TITULOS": {}
-                },
-                "DERECHOS FIDUCIARIOS": {
-                    "FIDEICOMISOS DE INVERSION MONEDA EXTRANJERA": {},
-                    "FIDEICOMISOS DE INVERSION MONEDA NACIONAL": {}
-                },
-                "OBLIGATORIAS": {
-                    "BONOS DE FINANCIAMIENTO ESPECIAL": {},
-                    "BONOS DE FINANCIAMIENTO PRESUPUESTAL": {},
-                    "BONOS PARA DESARROLLO SOCIAL Y SEGURIDAD INTERNA (BDSI)": {},
-                    "OTRAS": {}
-                },
-                "OTRAS INVERSIONES": {
-                    "ACCIONES O DERECHOS EN CLUBES DEPORTIVOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "APORTES EN COOPERATIVAS": {},
-                    "BONOS EN COLEGIOS": {},
-                    "DERECHOS EN CLUBES SOCIALES": {},
-                    "DIVERSAS": {}
-                },
-                "PAPELES COMERCIALES": {
-                    "EMPRESAS COMERCIALES": {},
-                    "EMPRESAS DE SERVICIOS": {},
-                    "EMPRESAS INDUSTRIALES": {}
-                },
-                "PROVISIONES": {
-                    "ACCIONES": {},
-                    "ACEPTACIONES BANCARIAS O FINANCIERAS": {},
-                    "BONOS": {},
-                    "CEDULAS": {},
-                    "CERTIFICADOS": {},
-                    "CUENTAS EN PARTICIPACION": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "DERECHOS DE RECOMPRA DE INVERSIONES NEGOCIADAS": {},
-                    "DERECHOS FIDUCIARIOS": {},
-                    "OBLIGATORIAS": {},
-                    "OTRAS INVERSIONES": {},
-                    "PAPELES COMERCIALES": {},
-                    "TITULOS": {}
-                },
-                "TITULOS": {
-                    "OTROS": {},
-                    "TESOROS": {},
-                    "TITULOS CANJEABLES POR CERTIFICADOS DE CAMBIO": {},
-                    "TITULOS DE AHORRO CAFETERO (TAC)": {},
-                    "TITULOS DE AHORRO EDUCATIVO (TAE)": {},
-                    "TITULOS DE AHORRO NACIONAL (TAN)": {},
-                    "TITULOS DE CREDITO DE FOMENTO": {},
-                    "TITULOS DE DESARROLLO AGROPECUARIO": {},
-                    "TITULOS DE DEVOLUCION DE IMPUESTOS NACIONALES (TIDIS)": {},
-                    "TITULOS DE PARTICIPACION": {},
-                    "TITULOS DE TESORERIA (TES)": {},
-                    "TITULOS ENERGETICOS DE RENTABILIDAD CRECIENTE (TER)": {},
-                    "TITULOS FINANCIEROS AGROINDUSTRIALES (TFA)": {},
-                    "TITULOS FINANCIEROS INDUSTRIALES Y COMERCIALES": {},
-                    "TITULOS INMOBILIARIOS": {}
-                }
-            },
-            "OTROS ACTIVOS": {
-                "BIENES DE ARTE Y CULTURA": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIBLIOTECAS": {},
-                    "OBRAS DE ARTE": {},
-                    "OTROS": {}
-                },
-                "DIVERSOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "AMORTIZACION ACUMULADA DE BIENES ENTREGADOS EN COMODATO (CR)": {},
-                    "BIENES ENTREGADOS EN COMODATO": {},
-                    "BIENES RECIBIDOS EN PAGO": {},
-                    "DERECHOS SUCESORALES": {},
-                    "ESTAMPILLAS": {},
-                    "MAQUINAS PORTEADORAS": {},
-                    "OTROS": {
-                        "OTROS": {}
-                    }
-                },
-                "PROVISIONES": {
-                    "BIENES DE ARTE Y CULTURA": {},
-                    "DIVERSOS": {}
-                }
-            },
-            "PROPIEDADES, PLANTA Y EQUIPO": {
-                "ACUEDUCTOS, PLANTAS Y REDES": {
-                    "ACUEDUCTO, ACEQUIAS Y CANALIZACIONES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "GASODUCTOS": {},
-                    "INSTALACIONES PARA AGUA Y ENERGIA": {},
-                    "INSTALACIONES Y EQUIPO DE BOMBEO": {},
-                    "OLEODUCTOS": {},
-                    "OTROS": {},
-                    "PLANTAS DE DISTRIBUCION": {},
-                    "PLANTAS DE GENERACION A GAS": {},
-                    "PLANTAS DE GENERACION DIESEL, GASOLINA Y PETROLEO": {},
-                    "PLANTAS DE GENERACION HIDRAULICA": {},
-                    "PLANTAS DE GENERACION TERMICA": {},
-                    "PLANTAS DE TRANSMISION Y SUBESTACIONES": {},
-                    "PLANTAS DE TRATAMIENTO": {},
-                    "PLANTAS DESHIDRATADORAS": {},
-                    "POLIDUCTOS": {},
-                    "REDES ALIMENTACION DE GAS": {},
-                    "REDES DE AIRE": {},
-                    "REDES DE DISTRIBUCION": {},
-                    "REDES DE DISTRIBUCION DE VAPOR": {},
-                    "REDES DE RECOLECCION DE AGUAS NEGRAS": {},
-                    "REDES EXTERNAS DE TELEFONIA": {}
-                },
-                "AGOTAMIENTO ACUMULADO": {
-                    "AJUSTES POR INFLACION": {},
-                    "MINAS Y CANTERAS": {},
-                    "POZOS ARTESIANOS": {},
-                    "YACIMIENTOS": {}
-                },
-                "AMORTIZACION ACUMULADA": {
-                    "AJUSTES POR INFLACION": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "SEMOVIENTES": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "ARMAMENTO DE VIGILANCIA": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "CONSTRUCCIONES EN CURSO": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "POZOS ARTESIANOS": {},
-                    "PROYECTOS DE DESARROLLO": {},
-                    "PROYECTOS DE EXPLORACION": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "CONSTRUCCIONES Y EDIFICACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "ALMACENES": {},
-                    "BODEGAS": {},
-                    "CAFETERIA Y CASINOS": {},
-                    "CASETAS Y CAMPAMENTOS": {},
-                    "EDIFICIOS": {},
-                    "FABRICAS Y PLANTAS INDUSTRIALES": {},
-                    "HANGARES": {},
-                    "INSTALACIONES AGROPECUARIAS": {},
-                    "INVERNADEROS": {},
-                    "OFICINAS": {},
-                    "OTROS": {},
-                    "PARQUEADEROS, GARAJES Y DEPOSITOS": {},
-                    "SALAS DE EXHIBICION Y VENTAS": {},
-                    "SILOS": {},
-                    "TERMINAL DE BUSES Y TAXIS": {},
-                    "TERMINAL FERREO": {},
-                    "TERMINAL MARITIMO": {},
-                    "VIVIENDAS PARA EMPLEADOS Y OBREROS": {}
-                },
-                "DEPRECIACION ACUMULADA": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {}
-                },
-                "DEPRECIACION DIFERIDA": {
-                    "AJUSTES POR INFLACION": {},
-                    "DEFECTO FISCAL SOBRE LA CONTABLE (CR)": {},
-                    "EXCESO FISCAL SOBRE LA CONTABLE": {}
-                },
-                "ENVASES Y EMPAQUES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "EQUIPO DE COMPUTACION Y COMUNICACION": {
-                    "AJUSTES POR INFLACION": {},
-                    "EQUIPOS DE PROCESAMIENTO DE DATOS": {
-                        "EQUIPOS DE PROCESAMIENTO DE DATOS": {}
-                    },
-                    "EQUIPOS DE RADIO": {},
-                    "EQUIPOS DE TELECOMUNICACIONES": {
-                        "EQUIPOS DE TELECOMUNICACIONES": {}
-                    },
-                    "LINEAS TELEFONICAS": {},
-                    "OTROS": {},
-                    "SATELITES Y ANTENAS": {}
-                },
-                "EQUIPO DE HOTELES Y RESTAURANTES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE COMESTIBLES Y BEBIDAS": {},
-                    "DE HABITACIONES": {},
-                    "OTROS": {}
-                },
-                "EQUIPO DE OFICINA": {
-                    "AJUSTES POR INFLACION": {},
-                    "EQUIPOS": {
-                        "EQUIPOS": {}
-                    },
-                    "MUEBLES Y ENSERES": {
-                        "MUEBLES Y ENSERES": {}
-                    },
-                    "OTROS": {}
-                },
-                "EQUIPO MEDICO-CIENTIFICO": {
-                    "AJUSTES POR INFLACION": {},
-                    "INSTRUMENTAL": {},
-                    "LABORATORIO": {},
-                    "MEDICO": {},
-                    "ODONTOLOGICO": {},
-                    "OTROS": {}
-                },
-                "FLOTA Y EQUIPO AEREO": {
-                    "AJUSTES POR INFLACION": {},
-                    "AVIONES": {},
-                    "AVIONETAS": {},
-                    "EQUIPOS DE VUELO": {},
-                    "HELICOPTEROS": {},
-                    "MANUALES DE ENTRENAMIENTO PERSONAL TECNICO": {},
-                    "OTROS": {},
-                    "TURBINAS Y MOTORES": {}
-                },
-                "FLOTA Y EQUIPO DE TRANSPORTE": {
-                    "AJUSTES POR INFLACION": {},
-                    "AUTOS, CAMIONETAS Y CAMPEROS": {},
-                    "BANDAS TRANSPORTADORAS": {},
-                    "BICICLETAS": {},
-                    "BUSES Y BUSETAS": {},
-                    "CAMIONES, VOLQUETAS Y FURGONES": {},
-                    "ESTIBAS Y CARRETAS": {},
-                    "MONTACARGAS": {},
-                    "MOTOCICLETAS": {},
-                    "OTROS": {},
-                    "PALAS Y GRUAS": {},
-                    "RECOLECTORES Y CONTENEDORES": {},
-                    "TRACTOMULAS Y REMOLQUES": {}
-                },
-                "FLOTA Y EQUIPO FERREO": {
-                    "AJUSTES POR INFLACION": {},
-                    "LOCOMOTORAS": {},
-                    "OTROS": {},
-                    "REDES FERREAS": {},
-                    "VAGONES": {}
-                },
-                "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {
-                    "AJUSTES POR INFLACION": {},
-                    "AMARRES": {},
-                    "BOTES": {},
-                    "BOYAS": {},
-                    "BUQUES": {},
-                    "CONTENEDORES Y CHASISES": {},
-                    "GABARRAS": {},
-                    "LANCHAS": {},
-                    "OTROS": {},
-                    "REMOLCADORAS": {}
-                },
-                "MAQUINARIA Y EQUIPO": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "MAQUINARIA Y EQUIPOS EN MONTAJE": {
-                    "AJUSTES POR INFLACION": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "PLANTAS Y REDES": {}
-                },
-                "MATERIALES PROYECTOS PETROLEROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "COSTOS DE IMPORTACION MATERIALES": {},
-                    "PROYECTOS DE CONSTRUCCION": {},
-                    "TUBERIAS Y EQUIPO": {}
-                },
-                "MINAS Y CANTERAS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CANTERAS": {},
-                    "MINAS": {}
-                },
-                "PLANTACIONES AGRICOLAS Y FORESTALES": {
-                    "AJUSTES POR INFLACION": {},
-                    "CULTIVOS AMORTIZABLES": {},
-                    "CULTIVOS EN DESARROLLO": {}
-                },
-                "POZOS ARTESIANOS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "PROPIEDADES, PLANTA Y EQUIPO EN TRANSITO": {
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "PLANTAS Y REDES": {},
-                    "SEMOVIENTES": {}
-                },
-                "PROVISIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES EN CURSO": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA EN MONTAJE": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "MATERIALES PROYECTOS PETROLEROS": {},
-                    "MINAS Y CANTERAS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "PROPIEDADES, PLANTA Y EQUIPO EN TRANSITO": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {},
-                    "YACIMIENTOS": {}
-                },
-                "SEMOVIENTES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "TERRENOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "RURALES": {},
-                    "URBANOS": {}
-                },
-                "VIAS DE COMUNICACION": {
-                    "AERODROMOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CALLES": {},
-                    "OTROS": {},
-                    "PAVIMENTACION Y PATIOS": {},
-                    "PUENTES": {},
-                    "VIAS": {}
-                },
-                "YACIMIENTOS": {
-                    "AJUSTES POR INFLACION": {}
-                }
-            },
-            "VALORIZACIONES": {
-                "DE INVERSIONES": {
-                    "ACCIONES": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "DERECHOS FIDUCIARIOS": {}
-                },
-                "DE OTROS ACTIVOS": {
-                    "BIENES DE ARTE Y CULTURA": {},
-                    "BIENES ENTREGADOS EN COMODATO": {},
-                    "BIENES RECIBIDOS EN PAGO": {},
-                    "INVENTARIO DE SEMOVIENTES": {}
-                },
-                "DE PROPIEDADES, PLANTA Y EQUIPO": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "MATERIALES PROYECTOS PETROLEROS": {},
-                    "MINAS Y CANTERAS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {},
-                    "YACIMIENTOS": {}
-                }
-            },
-            "root_type": "Asset"
-        },
-        "COSTOS DE PRODUCCION O DE OPERACION": {
-            "CONTRATOS DE SERVICIOS": {},
-            "COSTOS INDIRECTOS": {},
-            "MANO DE OBRA DIRECTA": {},
-            "MATERIA PRIMA": {},
-            "root_type": "Expense"
-        },
-        "COSTOS DE VENTAS": {
-            "COMPRAS": {
-                "COMPRA DE ENERGIA": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "DE MATERIALES INDIRECTOS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "DE MATERIAS PRIMAS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "DE MERCANCIAS": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "DEVOLUCIONES EN COMPRAS (CR)": {
-                    "AJUSTES POR INFLACION": {}
-                }
-            },
-            "COSTO DE VENTAS Y DE PRESTACION DE SERVICIOS": {
-                "ACTIVIDAD FINANCIERA": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE INVERSIONES": {},
-                    "DE SERVICIO DE BOLSA": {}
-                },
-                "ACTIVIDADES INMOBILIARIAS, EMPRESARIALES Y DE ALQUILER": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES EMPRESARIALES DE CONSULTORIA": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALQUILER DE EFECTOS PERSONALES Y ENSERES DOMESTICOS": {},
-                    "ALQUILER EQUIPO DE TRANSPORTE": {},
-                    "ALQUILER MAQUINARIA Y EQUIPO": {},
-                    "ARRENDAMIENTOS DE BIENES INMUEBLES": {},
-                    "CONSULTORIA EN EQUIPO Y PROGRAMAS DE INFORMATICA": {},
-                    "DOTACION DE PERSONAL": {},
-                    "ENVASE Y EMPAQUE": {},
-                    "FOTOCOPIADO": {},
-                    "FOTOGRAFIA": {},
-                    "INMOBILIARIAS POR RETRIBUCION O CONTRATA": {},
-                    "INVESTIGACION Y SEGURIDAD": {},
-                    "INVESTIGACIONES CIENTIFICAS Y DE DESARROLLO": {},
-                    "LIMPIEZA DE INMUEBLES": {},
-                    "MANTENIMIENTO Y REPARACION DE MAQUINARIA DE OFICINA": {},
-                    "MANTENIMIENTO Y REPARACION DE MAQUINARIA Y EQUIPO": {},
-                    "PROCESAMIENTO DE DATOS": {},
-                    "PUBLICIDAD": {}
-                },
-                "AGRICULTURA, GANADERIA, CAZA Y SILVICULTURA": {
-                    "ACTIVIDAD DE CAZA": {},
-                    "ACTIVIDAD DE SILVICULTURA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CRIA DE GANADO CABALLAR Y VACUNO": {},
-                    "CRIA DE OTROS ANIMALES": {},
-                    "CRIA DE OVEJAS, CABRAS, ASNOS, MULAS Y BURDEGANOS": {},
-                    "CULTIVO DE ALGODON Y PLANTAS PARA MATERIAL TEXTIL": {},
-                    "CULTIVO DE BANANO": {},
-                    "CULTIVO DE CAFE": {},
-                    "CULTIVO DE CANA DE AZUCAR": {},
-                    "CULTIVO DE CEREALES": {},
-                    "CULTIVO DE FLORES": {},
-                    "CULTIVOS DE FRUTAS, NUECES Y PLANTAS AROMATICAS": {},
-                    "CULTIVOS DE HORTALIZAS, LEGUMBRES Y PLANTAS ORNAMENTALES": {},
-                    "OTROS CULTIVOS AGRICOLAS": {},
-                    "PRODUCCION AVICOLA": {},
-                    "SERVICIOS AGRICOLAS Y GANADEROS": {}
-                },
-                "COMERCIO AL POR MAYOR Y AL POR MENOR": {
-                    "AJUSTES POR INFLACION": {},
-                    "MANTENIMIENTO, REPARACION Y LAVADO DE VEHICULOS AUTOMOTORES": {},
-                    "REPARACION DE EFECTOS PERSONALES Y ELECTRODOMESTICOS": {},
-                    "VENTA A CAMBIO DE RETRIBUCION O POR CONTRATA": {},
-                    "VENTA DE ANIMALES VIVOS Y CUEROS": {},
-                    "VENTA DE ARTICULOS EN CACHARRERIAS Y MISCELANEAS": {},
-                    "VENTA DE ARTICULOS EN CASAS DE EMPENO Y PRENDERIAS": {},
-                    "VENTA DE ARTICULOS EN RELOJERIAS Y JOYERIAS": {},
-                    "VENTA DE COMBUSTIBLES SOLIDOS, LIQUIDOS, GASEOSOS": {},
-                    "VENTA DE CUBIERTOS, VAJILLAS, CRISTALERIA, PORCELANAS, CERAMICAS Y OTROS ARTICULOS DE USO DOMESTICO": {},
-                    "VENTA DE ELECTRODOMESTICOS Y MUEBLES": {},
-                    "VENTA DE EMPAQUES": {},
-                    "VENTA DE EQUIPO FOTOGRAFICO": {},
-                    "VENTA DE EQUIPO OPTICO Y DE PRECISION": {},
-                    "VENTA DE EQUIPO PROFESIONAL Y CIENTIFICO": {},
-                    "VENTA DE HERRAMIENTAS Y ARTICULOS DE FERRETERIA": {},
-                    "VENTA DE INSTRUMENTOS MUSICALES": {},
-                    "VENTA DE INSTRUMENTOS QUIRURGICOS Y ORTOPEDICOS": {},
-                    "VENTA DE INSUMOS, MATERIAS PRIMAS AGROPECUARIAS Y FLORES": {},
-                    "VENTA DE JUEGOS, JUGUETES Y ARTICULOS DEPORTIVOS": {},
-                    "VENTA DE LIBROS, REVISTAS, ELEMENTOS DE PAPELERIA, UTILES Y TEXTOS ESCOLARES": {},
-                    "VENTA DE LOTERIAS, RIFAS, CHANCE, APUESTAS Y SIMILARES": {},
-                    "VENTA DE LUBRICANTES, ADITIVOS, LLANTAS Y LUJOS PARA AUTOMOTORES": {},
-                    "VENTA DE MAQUINARIA, EQUIPO DE OFICINA Y PROGRAMAS DE COMPUTADOR": {},
-                    "VENTA DE MATERIALES DE CONSTRUCCION, FONTANERIA Y CALEFACCION": {},
-                    "VENTA DE OTROS INSUMOS Y MATERIAS PRIMAS NO AGROPECUARIAS": {},
-                    "VENTA DE OTROS PRODUCTOS": {},
-                    "VENTA DE PAPEL Y CARTON": {},
-                    "VENTA DE PARTES, PIEZAS Y ACCESORIOS DE VEHICULOS AUTOMOTORES": {},
-                    "VENTA DE PINTURAS Y LACAS": {},
-                    "VENTA DE PRODUCTOS AGROPECUARIOS": {},
-                    "VENTA DE PRODUCTOS DE ASEO, FARMACEUTICOS, MEDICINALES Y ARTICULOS DE TOCADOR": {},
-                    "VENTA DE PRODUCTOS DE VIDRIOS Y MARQUETERIA": {},
-                    "VENTA DE PRODUCTOS EN ALMACENES NO ESPECIALIZADOS": {},
-                    "VENTA DE PRODUCTOS INTERMEDIOS, DESPERDICIOS Y DESECHOS": {},
-                    "VENTA DE PRODUCTOS TEXTILES, DE VESTIR, DE CUERO Y CALZADO": {},
-                    "VENTA DE QUIMICOS": {},
-                    "VENTA DE VEHICULOS AUTOMOTORES": {}
-                },
-                "CONSTRUCCION": {
-                    "ACONDICIONAMIENTO DE EDIFICIOS": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALQUILER DE EQUIPO CON OPERARIO": {},
-                    "CONSTRUCCION DE EDIFICIOS Y OBRAS DE INGENIERIA CIVIL": {},
-                    "PREPARACION DE TERRENOS": {},
-                    "TERMINACION DE EDIFICACIONES": {}
-                },
-                "ENSENANZA": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES RELACIONADAS CON LA EDUCACION": {},
-                    "AJUSTES POR INFLACION": {}
-                },
-                "EXPLOTACION DE MINAS Y CANTERAS": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CARBON": {},
-                    "GAS NATURAL": {},
-                    "MINERALES DE HIERRO": {},
-                    "MINERALES METALIFEROS NO FERROSOS": {},
-                    "ORO": {},
-                    "OTRAS MINAS Y CANTERAS": {},
-                    "PETROLEO CRUDO": {},
-                    "PIEDRA, ARENA Y ARCILLA": {},
-                    "PIEDRAS PRECIOSAS": {},
-                    "PRESTACION DE SERVICIOS SECTOR MINERO": {},
-                    "SERVICIOS RELACIONADOS CON EXTRACCION DE PETROLEO Y GAS": {}
-                },
-                "HOTELES Y RESTAURANTES": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "BARES Y CANTINAS": {},
-                    "CAMPAMENTO Y OTROS TIPOS DE HOSPEDAJE": {},
-                    "HOTELERIA": {},
-                    "RESTAURANTES": {}
-                },
-                "INDUSTRIAS MANUFACTURERAS": {
-                    "ACABADO DE PRODUCTOS TEXTILES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CORTE, TALLADO Y ACABADO DE LA PIEDRA": {},
-                    "CURTIDO, ADOBO O PREPARACION DE CUERO": {},
-                    "EDICIONES Y PUBLICACIONES": {},
-                    "ELABORACION DE ABONOS Y COMPUESTOS DE NITROGENO": {},
-                    "ELABORACION DE ACEITES Y GRASAS": {},
-                    "ELABORACION DE ALIMENTOS PARA ANIMALES": {},
-                    "ELABORACION DE ALMIDONES Y DERIVADOS": {},
-                    "ELABORACION DE APARATOS DE USO DOMESTICO": {},
-                    "ELABORACION DE ARTICULOS DE HORMIGON, CEMENTO Y YESO": {},
-                    "ELABORACION DE ARTICULOS DE MATERIALES TEXTILES": {},
-                    "ELABORACION DE AZUCAR Y MELAZAS": {},
-                    "ELABORACION DE BEBIDAS ALCOHOLICAS Y ALCOHOL ETILICO": {},
-                    "ELABORACION DE BEBIDAS MALTEADAS Y DE MALTA": {},
-                    "ELABORACION DE BEBIDAS NO ALCOHOLICAS": {},
-                    "ELABORACION DE CACAO, CHOCOLATE Y CONFITERIA": {},
-                    "ELABORACION DE CALZADO": {},
-                    "ELABORACION DE CEMENTO, CAL Y YESO": {},
-                    "ELABORACION DE CUERDAS, CORDELES, BRAMANTES Y REDES": {},
-                    "ELABORACION DE EQUIPO DE ILUMINACION": {},
-                    "ELABORACION DE EQUIPO DE OFICINA": {},
-                    "ELABORACION DE FIBRAS": {},
-                    "ELABORACION DE JABONES, DETERGENTES Y PREPARADOS DE TOCADOR": {},
-                    "ELABORACION DE MALETAS, BOLSOS Y SIMILARES": {},
-                    "ELABORACION DE OTROS PRODUCTOS ALIMENTICIOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS DE CAUCHO": {},
-                    "ELABORACION DE OTROS PRODUCTOS DE METAL": {},
-                    "ELABORACION DE OTROS PRODUCTOS MINERALES NO METALICOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS QUIMICOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS TEXTILES": {},
-                    "ELABORACION DE OTROS TIPOS DE EQUIPO ELECTRICO": {},
-                    "ELABORACION DE PASTA Y PRODUCTOS DE MADERA, PAPEL Y CARTON": {},
-                    "ELABORACION DE PASTAS Y PRODUCTOS FARINACEOS": {},
-                    "ELABORACION DE PILAS Y BATERIAS PRIMARIAS": {},
-                    "ELABORACION DE PINTURAS, TINTAS Y MASILLAS": {},
-                    "ELABORACION DE PLASTICO Y CAUCHO SINTETICO": {},
-                    "ELABORACION DE PRENDAS DE VESTIR": {},
-                    "ELABORACION DE PRODUCTOS DE CAFE": {},
-                    "ELABORACION DE PRODUCTOS DE CERAMICA, LOZA, PIEDRA, ARCILLA Y PORCELANA": {},
-                    "ELABORACION DE PRODUCTOS DE HORNO DE COQUE": {},
-                    "ELABORACION DE PRODUCTOS DE LA REFINACION DE PETROLEO": {},
-                    "ELABORACION DE PRODUCTOS DE MOLINERIA": {},
-                    "ELABORACION DE PRODUCTOS DE PLASTICO": {},
-                    "ELABORACION DE PRODUCTOS DE TABACO": {},
-                    "ELABORACION DE PRODUCTOS FARMACEUTICOS Y BOTANICOS": {},
-                    "ELABORACION DE PRODUCTOS LACTEOS": {},
-                    "ELABORACION DE PRODUCTOS PARA PANADERIA": {},
-                    "ELABORACION DE PRODUCTOS QUIMICOS DE USO AGROPECUARIO": {},
-                    "ELABORACION DE SUSTANCIAS QUIMICAS BASICAS": {},
-                    "ELABORACION DE TAPICES Y ALFOMBRAS": {},
-                    "ELABORACION DE TEJIDOS": {},
-                    "ELABORACION DE VIDRIO Y PRODUCTOS DE VIDRIO": {},
-                    "ELABORACION DE VINOS": {},
-                    "FABRICACION DE AERONAVES": {},
-                    "FABRICACION DE APARATOS E INSTRUMENTOS MEDICOS": {},
-                    "FABRICACION DE ARTICULOS DE FERRETERIA": {},
-                    "FABRICACION DE ARTICULOS Y EQUIPO PARA DEPORTE": {},
-                    "FABRICACION DE BICICLETAS Y SILLAS DE RUEDAS": {},
-                    "FABRICACION DE CARROCERIAS PARA AUTOMOTORES": {},
-                    "FABRICACION DE EQUIPOS DE ELEVACION Y MANIPULACION": {},
-                    "FABRICACION DE EQUIPOS DE RADIO, TELEVISION Y COMUNICACIONES": {},
-                    "FABRICACION DE INSTRUMENTOS DE MEDICION Y CONTROL": {},
-                    "FABRICACION DE INSTRUMENTOS DE MUSICA": {},
-                    "FABRICACION DE INSTRUMENTOS DE OPTICA Y EQUIPO FOTOGRAFICO": {},
-                    "FABRICACION DE JOYAS Y ARTICULOS CONEXOS": {},
-                    "FABRICACION DE JUEGOS Y JUGUETES": {},
-                    "FABRICACION DE LOCOMOTORAS Y MATERIAL RODANTE PARA FERROCARRILES": {},
-                    "FABRICACION DE MAQUINARIA Y EQUIPO": {},
-                    "FABRICACION DE MOTOCICLETAS": {},
-                    "FABRICACION DE MUEBLES": {},
-                    "FABRICACION DE OTROS TIPOS DE TRANSPORTE": {},
-                    "FABRICACION DE PARTES, PIEZAS Y ACCESORIOS PARA AUTOMOTORES": {},
-                    "FABRICACION DE PRODUCTOS METALICOS PARA USO ESTRUCTURAL": {},
-                    "FABRICACION DE RELOJES": {},
-                    "FABRICACION DE VEHICULOS AUTOMOTORES": {},
-                    "FABRICACION Y REPARACION DE BUQUES Y OTRAS EMBARCACIONES": {},
-                    "FORJA, PRENSADO, ESTAMPADO, LAMINADO DE METAL Y PULVIMETALURGIA": {},
-                    "FUNDICION DE METALES NO FERROSOS": {},
-                    "IMPRESION": {},
-                    "INDUSTRIAS BASICAS Y FUNDICION DE HIERRO Y ACERO": {},
-                    "PREPARACION E HILATURA DE FIBRAS TEXTILES Y TEJEDURIA": {},
-                    "PREPARACION, ADOBO Y TENIDO DE PIELES": {},
-                    "PRODUCCION DE MADERA, ARTICULOS DE MADERA Y CORCHO": {},
-                    "PRODUCCION Y PROCESAMIENTO DE CARNES Y PRODUCTOS CARNICOS": {},
-                    "PRODUCTOS DE FRUTAS, LEGUMBRES Y HORTALIZAS": {},
-                    "PRODUCTOS DE OTRAS INDUSTRIAS MANUFACTURERAS": {},
-                    "PRODUCTOS DE PESCADO": {},
-                    "PRODUCTOS PRIMARIOS DE METALES PRECIOSOS Y DE METALES NO FERROSOS": {},
-                    "RECICLAMIENTO DE DESPERDICIOS": {},
-                    "REPRODUCCION DE GRABACIONES": {},
-                    "REVESTIMIENTO DE METALES Y OBRAS DE INGENIERIA MECANICA": {},
-                    "SERVICIOS RELACIONADOS CON LA EDICION Y LA IMPRESION": {}
-                },
-                "OTRAS ACTIVIDADES DE SERVICIOS COMUNITARIOS, SOCIALES Y PERSONALES": {
-                    "ACTIVIDAD DE RADIO Y TELEVISION": {},
-                    "ACTIVIDAD TEATRAL, MUSICAL Y ARTISTICA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES DE ASOCIACION": {},
-                    "AGENCIAS DE NOTICIAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ELIMINACION DE DESPERDICIOS Y AGUAS RESIDUALES": {},
-                    "ENTRETENIMIENTO Y ESPARCIMIENTO": {},
-                    "EXHIBICION DE FILMES Y VIDEOCINTAS": {},
-                    "GRABACION Y PRODUCCION DE DISCOS": {},
-                    "LAVANDERIAS Y SIMILARES": {},
-                    "PELUQUERIAS Y SIMILARES": {},
-                    "PRODUCCION Y DISTRIBUCION DE FILMES Y VIDEOCINTAS": {},
-                    "SERVICIOS FUNERARIOS": {},
-                    "ZONAS FRANCAS": {}
-                },
-                "PESCA": {
-                    "ACTIVIDAD DE PESCA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "EXPLOTACION DE CRIADEROS DE PECES": {}
-                },
-                "SERVICIOS SOCIALES Y DE SALUD": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES DE SERVICIOS SOCIALES": {},
-                    "ACTIVIDADES VETERINARIAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "SERVICIO DE LABORATORIO": {},
-                    "SERVICIO HOSPITALARIO": {},
-                    "SERVICIO MEDICO": {},
-                    "SERVICIO ODONTOLOGICO": {}
-                },
-                "SUMINISTRO DE ELECTRICIDAD, GAS Y AGUA": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CAPTACION, DEPURACION Y DISTRIBUCION DE AGUA": {},
-                    "FABRICACION DE GAS Y DISTRIBUCION DE COMBUSTIBLES GASEOSOS": {},
-                    "GENERACION, CAPTACION Y DISTRIBUCION DE ENERGIA ELECTRICA": {}
-                },
-                "TRANSPORTE, ALMACENAMIENTO Y COMUNICACIONES": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AGENCIAS DE VIAJE": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALMACENAMIENTO Y DEPOSITO": {},
-                    "MANIPULACION DE CARGA": {},
-                    "OTRAS AGENCIAS DE TRANSPORTE": {},
-                    "SERVICIO DE RADIO Y TELEVISION POR CABLE": {},
-                    "SERVICIO DE TELEGRAFO": {},
-                    "SERVICIO DE TRANSMISION DE DATOS": {},
-                    "SERVICIO DE TRANSPORTE POR CARRETERA": {},
-                    "SERVICIO DE TRANSPORTE POR TUBERIAS": {},
-                    "SERVICIO DE TRANSPORTE POR VIA ACUATICA": {
-                        "SERVICIO DE TRANSPORTE POR VIA ACUATICA": {}
-                    },
-                    "SERVICIO DE TRANSPORTE POR VIA AEREA": {},
-                    "SERVICIO DE TRANSPORTE POR VIA FERREA": {},
-                    "SERVICIO POSTAL Y DE CORREO": {},
-                    "SERVICIO TELEFONICO": {},
-                    "SERVICIOS COMPLEMENTARIOS PARA EL TRANSPORTE": {},
-                    "TRANSMISION DE SONIDO E IMAGENES POR CONTRATO": {}
-                }
-            },
-            "root_type": "Expense"
-        },
-        "CUENTAS DE ORDEN ACREEDORAS": {
-            "ACREEDORAS DE CONTROL": {
-                "AJUSTES POR INFLACION PATRIMONIO": {
-                    "CAPITAL SOCIAL": {},
-                    "DIVIDENDOS O PARTICIPACIONES DECRETADAS EN ACCIONES, CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "RESERVAS": {},
-                    "RESULTADOS DE EJERCICIOS ANTERIORES": {},
-                    "SUPERAVIT DE CAPITAL": {}
-                },
-                "CONTRATOS DE ARRENDAMIENTO FINANCIERO": {
-                    "BIENES INMUEBLES": {},
-                    "BIENES MUEBLES": {}
-                },
-                "OTRAS CUENTAS DE ORDEN ACREEDORAS DE CONTROL": {
-                    "ADJUDICACIONES PENDIENTES DE LEGALIZAR": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONTRATOS DE CONSTRUCCIONES E INSTALACIONES POR EJECUTAR": {},
-                    "CONVENIOS DE PAGO": {},
-                    "DIVERSAS": {},
-                    "DOCUMENTOS POR COBRAR DESCONTADOS": {},
-                    "RESERVA ARTICULO 3\u00ba LEY 4\u00aa DE 1980": {},
-                    "RESERVA COSTO REPOSICION SEMOVIENTES": {}
-                }
-            },
-            "ACREEDORAS DE CONTROL POR CONTRA (DB)": {},
-            "ACREEDORAS FISCALES": {},
-            "ACREEDORAS FISCALES POR CONTRA (DB)": {},
-            "RESPONSABILIDADES CONTINGENTES": {
-                "BIENES Y VALORES RECIBIDOS DE TERCEROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "EN ARRENDAMIENTO": {},
-                    "EN COMODATO": {},
-                    "EN CONSIGNACION": {},
-                    "EN DEPOSITO": {},
-                    "EN PRESTAMO": {}
-                },
-                "BIENES Y VALORES RECIBIDOS EN CUSTODIA": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES MUEBLES": {},
-                    "VALORES MOBILIARIOS": {}
-                },
-                "BIENES Y VALORES RECIBIDOS EN GARANTIA": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES INMUEBLES": {},
-                    "BIENES MUEBLES": {},
-                    "CONTRATOS DE GANADO EN PARTICIPACION": {},
-                    "VALORES MOBILIARIOS": {}
-                },
-                "CONTRATOS DE ADMINISTRACION DELEGADA": {},
-                "CUENTAS EN PARTICIPACION": {},
-                "LITIGIOS Y/O DEMANDAS": {
-                    "ADMINISTRATIVOS O ARBITRALES": {},
-                    "CIVILES": {},
-                    "LABORALES": {},
-                    "TRIBUTARIOS": {}
-                },
-                "OTRAS RESPONSABILIDADES CONTINGENTES": {},
-                "PROMESAS DE COMPRAVENTA": {}
-            },
-            "RESPONSABILIDADES CONTINGENTES POR CONTRA (DB)": {},
-            "root_type": "Liability"
-        },
-        "CUENTAS DE ORDEN DEUDORAS": {
-            "DERECHOS CONTINGENTES": {
-                "BIENES Y VALORES EN PODER DE TERCEROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "EN ARRENDAMIENTO": {},
-                    "EN CONSIGNACION": {},
-                    "EN DEPOSITO": {},
-                    "EN PRESTAMO": {}
-                },
-                "BIENES Y VALORES ENTREGADOS EN CUSTODIA": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES MUEBLES": {},
-                    "VALORES MOBILIARIOS": {}
-                },
-                "BIENES Y VALORES ENTREGADOS EN GARANTIA": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES INMUEBLES": {},
-                    "BIENES MUEBLES": {},
-                    "CONTRATOS DE GANADO EN PARTICIPACION": {},
-                    "VALORES MOBILIARIOS": {}
-                },
-                "DIVERSAS": {
-                    "AJUSTES POR INFLACION": {},
-                    "OTRAS": {},
-                    "VALORES ADQUIRIDOS POR RECIBIR": {}
-                },
-                "LITIGIOS Y/O DEMANDAS": {
-                    "EJECUTIVOS": {},
-                    "INCUMPLIMIENTO DE CONTRATOS": {}
-                },
-                "PROMESAS DE COMPRAVENTA": {}
-            },
-            "DERECHOS CONTINGENTES POR CONTRA (CR)": {},
-            "DEUDORAS DE CONTROL": {
-                "ACTIVOS CASTIGADOS": {
-                    "DEUDORES": {},
-                    "INVERSIONES": {},
-                    "OTROS ACTIVOS": {}
-                },
-                "AJUSTES POR INFLACION ACTIVOS": {
-                    "CARGOS DIFERIDOS": {},
-                    "INTANGIBLES": {},
-                    "INVENTARIOS": {},
-                    "INVERSIONES": {},
-                    "OTROS ACTIVOS": {},
-                    "PROPIEDADES, PLANTA Y EQUIPO": {}
-                },
-                "BIENES RECIBIDOS EN ARRENDAMIENTO FINANCIERO": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES INMUEBLES": {},
-                    "BIENES MUEBLES": {}
-                },
-                "CAPITALIZACION POR REVALORIZACION DE PATRIMONIO": {},
-                "CREDITOS A FAVOR NO UTILIZADOS": {
-                    "EXTERIOR": {},
-                    "PAIS": {}
-                },
-                "OTRAS CUENTAS DEUDORAS DE CONTROL": {
-                    "AJUSTES POR INFLACION": {},
-                    "BIENES Y VALORES EN FIDEICOMISO": {},
-                    "CERTIFICADOS DE DEPOSITO A TERMINO": {},
-                    "CHEQUES DEVUELTOS": {},
-                    "CHEQUES POSFECHADOS": {},
-                    "DIVERSAS": {},
-                    "INTERESES SOBRE DEUDAS VENCIDAS": {}
-                },
-                "PROPIEDADES, PLANTA Y EQUIPO TOTALMENTE DEPRECIADOS, AGOTADOS Y/O AMORTIZADOS": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "MATERIALES PROYECTOS PETROLEROS": {},
-                    "MINAS Y CANTERAS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "SEMOVIENTES": {},
-                    "VIAS DE COMUNICACION": {},
-                    "YACIMIENTOS": {}
-                },
-                "TITULOS DE INVERSION AMORTIZADOS": {
-                    "BONOS": {},
-                    "OTROS": {}
-                },
-                "TITULOS DE INVERSION NO COLOCADOS": {
-                    "ACCIONES": {},
-                    "BONOS": {},
-                    "OTROS": {}
-                }
-            },
-            "DEUDORAS DE CONTROL POR CONTRA (CR)": {},
-            "DEUDORAS FISCALES": {},
-            "DEUDORAS FISCALES POR CONTRA (CR)": {},
-            "root_type": "Asset"
-        },
-        "GASTOS": {
-            "GANANCIAS Y PERDIDAS": {
-                "GANANCIAS Y PERDIDAS": {
-                    "GANANCIAS Y PERDIDAS": {}
-                }
-            },
-            "IMPUESTO DE RENTA Y COMPLEMENTARIOS": {
-                "IMPUESTO DE RENTA Y COMPLEMENTARIOS": {
-                    "IMPUESTO DE RENTA Y COMPLEMENTARIOS": {}
-                }
-            },
-            "NO OPERACIONALES": {
-                "FINANCIEROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "COMISIONES": {},
-                    "DESCUENTOS COMERCIALES CONDICIONADOS": {},
-                    "DIFERENCIA EN CAMBIO": {},
-                    "GASTOS BANCARIOS": {},
-                    "GASTOS EN NEGOCIACION CERTIFICADOS DE CAMBIO": {},
-                    "GASTOS MANEJO Y EMISION DE BONOS": {},
-                    "INTERESES": {},
-                    "OTROS": {},
-                    "PRIMA AMORTIZADA": {},
-                    "REAJUSTE MONETARIO-UPAC (HOY UVR)": {}
-                },
-                "GASTOS DIVERSOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "AMORTIZACION DE BIENES ENTREGADOS EN COMODATO": {},
-                    "CONSTITUCION DE GARANTIAS": {},
-                    "DEMANDAS LABORALES": {},
-                    "DEMANDAS POR INCUMPLIMIENTO DE CONTRATOS": {},
-                    "DONACIONES": {},
-                    "INDEMNIZACIONES": {},
-                    "MULTAS, SANCIONES Y LITIGIOS": {},
-                    "OTROS": {
-                        "OTROS": {}
-                    }
-                },
-                "GASTOS EXTRAORDINARIOS": {
-                    "ACTIVIDADES CULTURALES Y CIVICAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "COSTAS Y PROCESOS JUDICIALES": {},
-                    "COSTOS Y GASTOS DE EJERCICIOS ANTERIORES": {},
-                    "IMPUESTOS ASUMIDOS": {},
-                    "OTROS": {}
-                },
-                "PERDIDA EN VENTA Y RETIRO DE BIENES": {
-                    "AJUSTES POR INFLACION": {},
-                    "OTROS": {},
-                    "PERDIDAS POR SINIESTROS": {},
-                    "RETIRO DE OTROS ACTIVOS": {},
-                    "RETIRO DE PROPIEDADES, PLANTA Y EQUIPO": {},
-                    "VENTA DE CARTERA": {},
-                    "VENTA DE INTANGIBLES": {},
-                    "VENTA DE INVERSIONES": {},
-                    "VENTA DE OTROS ACTIVOS": {},
-                    "VENTA DE PROPIEDADES, PLANTA Y EQUIPO": {}
-                },
-                "PERDIDAS METODO DE PARTICIPACION": {
-                    "DE SOCIEDADES ANONIMAS Y/O ASIMILADAS": {},
-                    "DE SOCIEDADES LIMITADAS Y/O ASIMILADAS": {}
-                }
-            },
-            "OPERACIONALES DE ADMINISTRACION": {
-                "ADECUACION E INSTALACION": {
-                    "AJUSTES POR INFLACION": {},
-                    "ARREGLOS ORNAMENTALES": {},
-                    "INSTALACIONES ELECTRICAS": {},
-                    "OTROS": {
-                        "OTROS": {}
-                    },
-                    "REPARACIONES LOCATIVAS": {
-                        "REPARACIONES LOCATIVAS": {}
-                    }
-                },
-                "AMORTIZACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "CARGOS DIFERIDOS": {},
-                    "INTANGIBLES": {},
-                    "OTRAS": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "ARRENDAMIENTOS": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AERODROMOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {
-                        "CONSTRUCCIONES Y EDIFICACIONES": {}
-                    },
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "OTROS": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {}
-                },
-                "CONTRIBUCIONES Y AFILIACIONES": {
-                    "AFILIACIONES Y SOSTENIMIENTO": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONTRIBUCIONES": {}
-                },
-                "DEPRECIACIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {}
-                },
-                "DIVERSOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CASINO Y RESTAURANTE": {},
-                    "COMBUSTIBLES Y LUBRICANTES": {},
-                    "COMISIONES": {
-                        "COMISIONES": {}
-                    },
-                    "ELEMENTOS DE ASEO Y CAFETERIA": {
-                        "ELEMENTOS DE ASEO Y CAFETERIA": {}
-                    },
-                    "ENVASES Y EMPAQUES": {},
-                    "ESTAMPILLAS": {},
-                    "GASTOS DE REPRESENTACION Y RELACIONES PUBLICAS": {},
-                    "INDEMNIZACION POR DANOS A TERCEROS": {},
-                    "LIBROS, SUSCRIPCIONES, PERIODICOS Y REVISTAS": {
-                        "LIBROS, SUSCRIPCIONES, PERIODICOS Y REVISTAS": {}
-                    },
-                    "MICROFILMACION": {},
-                    "MUSICA AMBIENTAL": {},
-                    "OTROS": {
-                        "OTROS": {}
-                    },
-                    "PARQUEADEROS": {},
-                    "POLVORA Y SIMILARES": {},
-                    "TAXIS Y BUSES": {},
-                    "UTILES, PAPELERIA Y FOTOCOPIAS": {
-                        "UTILES, PAPELERIA Y FOTOCOPIAS": {}
-                    }
-                },
-                "GASTOS DE PERSONAL": {
-                    "AJUSTES POR INFLACION": {},
-                    "AMORTIZACION BONOS PENSIONALES": {},
-                    "AMORTIZACION CALCULO ACTUARIAL PENSIONES DE JUBILACION": {},
-                    "AMORTIZACION TITULOS PENSIONALES": {},
-                    "APORTES A ADMINISTRADORAS DE RIESGOS PROFESIONALES, ARP": {},
-                    "APORTES A ENTIDADES PROMOTORAS DE SALUD, EPS": {},
-                    "APORTES A FONDOS DE PENSIONES Y/O CESANTIAS": {},
-                    "APORTES CAJAS DE COMPENSACION FAMILIAR": {},
-                    "APORTES ICBF": {},
-                    "APORTES SINDICALES": {},
-                    "AUXILIO DE TRANSPORTE": {
-                        "EMPLEADOS": {}
-                    },
-                    "AUXILIOS": {},
-                    "BONIFICACIONES": {},
-                    "CAPACITACION AL PERSONAL": {},
-                    "CESANTIAS": {
-                        "EMPLEADOS": {}
-                    },
-                    "COMISIONES": {},
-                    "CUOTAS PARTES PENSIONES DE JUBILACION": {},
-                    "DOTACION Y SUMINISTRO A TRABAJADORES": {},
-                    "GASTOS DEPORTIVOS Y DE RECREACION": {},
-                    "GASTOS MEDICOS Y DROGAS": {},
-                    "HORAS EXTRAS Y RECARGOS": {},
-                    "INCAPACIDADES": {},
-                    "INDEMNIZACIONES LABORALES": {},
-                    "INTERESES SOBRE CESANTIAS": {
-                        "EMPLEADOS": {}
-                    },
-                    "JORNALES": {},
-                    "OTROS": {},
-                    "PENSIONES DE JUBILACION": {},
-                    "PRIMA DE SERVICIOS": {
-                        "EMPLEADOS": {}
-                    },
-                    "PRIMAS EXTRALEGALES": {},
-                    "SALARIO INTEGRAL": {},
-                    "SEGUROS": {},
-                    "SENA": {},
-                    "SUELDOS": {
-                        "EMPLEADOS": {}
-                    },
-                    "VACACIONES": {
-                        "EMPLEADOS": {}
-                    },
-                    "VIATICOS": {}
-                },
-                "GASTOS DE VIAJE": {
-                    "AJUSTES POR INFLACION": {},
-                    "ALOJAMIENTO Y MANUTENCION": {},
-                    "OTROS": {},
-                    "PASAJES AEREOS": {},
-                    "PASAJES FERREOS": {},
-                    "PASAJES FLUVIALES Y/O MARITIMOS": {},
-                    "PASAJES TERRESTRES": {}
-                },
-                "GASTOS LEGALES": {
-                    "ADUANEROS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSULARES": {},
-                    "NOTARIALES": {
-                        "NOTARIALES": {}
-                    },
-                    "OTROS": {},
-                    "REGISTRO MERCANTIL": {
-                        "REGISTRO MERCANTIL": {}
-                    },
-                    "TRAMITES Y LICENCIAS": {}
-                },
-                "HONORARIOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "ASESORIA FINANCIERA": {},
-                    "ASESORIA JURIDICA": {
-                        "ASESORIA JURIDICA": {}
-                    },
-                    "ASESORIA TECNICA": {},
-                    "AUDITORIA EXTERNA": {},
-                    "AVALUOS": {},
-                    "JUNTA DIRECTIVA": {},
-                    "OTROS": {},
-                    "REVISORIA FISCAL": {}
-                },
-                "IMPUESTOS": {
-                    "A LA PROPIEDAD RAIZ": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CUOTAS DE FOMENTO": {
-                        "GRAVAMEN MOVIMIENTOS FINANCIEROS": {}
-                    },
-                    "DE ESPECTACULOS PUBLICOS": {},
-                    "DE TIMBRES": {},
-                    "DE TURISMO": {},
-                    "DE VALORIZACION": {},
-                    "DE VEHICULOS": {},
-                    "DERECHOS SOBRE INSTRUMENTOS PUBLICOS": {},
-                    "INDUSTRIA Y COMERCIO": {},
-                    "IVA DESCONTABLE": {},
-                    "OTROS": {},
-                    "TASA POR UTILIZACION DE PUERTOS": {}
-                },
-                "MANTENIMIENTO Y REPARACIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {
-                        "CONSTRUCCIONES Y EDIFICACIONES": {}
-                    },
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "PROVISIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DEUDORES": {},
-                    "INVERSIONES": {},
-                    "OTROS ACTIVOS": {},
-                    "PROPIEDADES, PLANTA Y EQUIPO": {}
-                },
-                "SEGUROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CORRIENTE DEBIL": {},
-                    "CUMPLIMIENTO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "INCENDIO": {},
-                    "LUCRO CESANTE": {},
-                    "MANEJO": {},
-                    "OBLIGATORIO ACCIDENTE DE TRANSITO": {},
-                    "OTROS": {},
-                    "RESPONSABILIDAD CIVIL Y EXTRACONTRACTUAL": {},
-                    "ROTURA DE MAQUINARIA": {},
-                    "SUSTRACCION Y HURTO": {},
-                    "TERREMOTO": {},
-                    "TRANSPORTE DE MERCANCIA": {},
-                    "VIDA COLECTIVA": {},
-                    "VUELO": {}
-                },
-                "SERVICIOS": {
-                    "ACUEDUCTO Y ALCANTARILLADO": {
-                        "ACUEDUCTO Y ALCANTARILLADO": {}
-                    },
-                    "AJUSTES POR INFLACION": {},
-                    "ASEO Y VIGILANCIA": {
-                        "ASEO Y VIGILANCIA": {}
-                    },
-                    "ASISTENCIA TECNICA": {},
-                    "CORREO, PORTES Y TELEGRAMAS": {},
-                    "ENERGIA ELECTRICA": {},
-                    "FAX Y TELEX": {},
-                    "GAS": {},
-                    "OTROS": {
-                        "OTROS": {}
-                    },
-                    "PROCESAMIENTO ELECTRONICO DE DATOS": {
-                        "PROCESAMIENTO ELECTRONICO DE DATOS": {}
-                    },
-                    "TELEFONO": {
-                        "TELEFONO": {}
-                    },
-                    "TEMPORALES": {
-                        "TEMPORALES": {}
-                    },
-                    "TRANSPORTE, FLETES Y ACARREOS": {}
-                }
-            },
-            "OPERACIONALES DE VENTAS": {
-                "ADECUACION E INSTALACION": {
-                    "AJUSTES POR INFLACION": {},
-                    "ARREGLOS ORNAMENTALES": {},
-                    "INSTALACIONES ELECTRICAS": {},
-                    "OTROS": {},
-                    "REPARACIONES LOCATIVAS": {}
-                },
-                "AMORTIZACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "CARGOS DIFERIDOS": {},
-                    "INTANGIBLES": {},
-                    "OTRAS": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "ARRENDAMIENTOS": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AERODROMOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "OTROS": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {}
-                },
-                "CONTRIBUCIONES Y AFILIACIONES": {
-                    "AFILIACIONES Y SOSTENIMIENTO": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONTRIBUCIONES": {}
-                },
-                "DEPRECIACIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {}
-                },
-                "DIVERSOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CASINO Y RESTAURANTE": {},
-                    "COMBUSTIBLES Y LUBRICANTES": {},
-                    "COMISIONES": {},
-                    "ELEMENTOS DE ASEO Y CAFETERIA": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "ESTAMPILLAS": {},
-                    "GASTOS DE REPRESENTACION Y RELACIONES PUBLICAS": {},
-                    "INDEMNIZACION POR DANOS A TERCEROS": {},
-                    "LIBROS, SUSCRIPCIONES, PERIODICOS Y REVISTAS": {},
-                    "MICROFILMACION": {},
-                    "MUSICA AMBIENTAL": {},
-                    "OTROS": {
-                        "Otros Gastos": {}
-                    },
-                    "PARQUEADEROS": {},
-                    "POLVORA Y SIMILARES": {},
-                    "TAXIS Y BUSES": {},
-                    "UTILES, PAPELERIA Y FOTOCOPIAS": {}
-                },
-                "FINANCIEROS-REAJUSTE DEL SISTEMA": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "GASTOS DE PERSONAL": {
-                    "AJUSTES POR INFLACION": {},
-                    "AMORTIZACION BONOS PENSIONALES": {},
-                    "AMORTIZACION CALCULO ACTUARIAL PENSIONES DE JUBILACION": {},
-                    "AMORTIZACION TITULOS PENSIONALES": {},
-                    "APORTES A ADMINISTRADORAS DE RIESGOS PROFESIONALES, ARP": {},
-                    "APORTES A ENTIDADES PROMOTORAS DE SALUD, EPS": {},
-                    "APORTES A FONDOS DE PENSIONES Y/O CESANTIAS": {},
-                    "APORTES CAJAS DE COMPENSACION FAMILIAR": {},
-                    "APORTES ICBF": {},
-                    "APORTES SINDICALES": {},
-                    "AUXILIO DE TRANSPORTE": {},
-                    "AUXILIOS": {},
-                    "BONIFICACIONES": {},
-                    "CAPACITACION AL PERSONAL": {},
-                    "CESANTIAS": {},
-                    "COMISIONES": {},
-                    "CUOTAS PARTES PENSIONES DE JUBILACION": {},
-                    "DOTACION Y SUMINISTRO A TRABAJADORES": {},
-                    "GASTOS DEPORTIVOS Y DE RECREACION": {},
-                    "GASTOS MEDICOS Y DROGAS": {},
-                    "HORAS EXTRAS Y RECARGOS": {},
-                    "INCAPACIDADES": {},
-                    "INDEMNIZACIONES LABORALES": {},
-                    "INTERESES SOBRE CESANTIAS": {},
-                    "JORNALES": {},
-                    "OTROS": {},
-                    "PENSIONES DE JUBILACION": {},
-                    "PRIMA DE SERVICIOS": {},
-                    "PRIMAS EXTRALEGALES": {},
-                    "SALARIO INTEGRAL": {},
-                    "SEGUROS": {},
-                    "SENA": {},
-                    "SUELDOS": {},
-                    "VACACIONES": {},
-                    "VIATICOS": {}
-                },
-                "GASTOS DE VIAJE": {
-                    "AJUSTES POR INFLACION": {},
-                    "ALOJAMIENTO Y MANUTENCION": {},
-                    "OTROS": {},
-                    "PASAJES AEREOS": {},
-                    "PASAJES FERREOS": {},
-                    "PASAJES FLUVIALES Y/O MARITIMOS": {},
-                    "PASAJES TERRESTRES": {}
-                },
-                "GASTOS LEGALES": {
-                    "ADUANEROS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSULARES": {},
-                    "NOTARIALES": {},
-                    "OTROS": {},
-                    "REGISTRO MERCANTIL": {},
-                    "TRAMITES Y LICENCIAS": {}
-                },
-                "HONORARIOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "ASESORIA FINANCIERA": {},
-                    "ASESORIA JURIDICA": {},
-                    "ASESORIA TECNICA": {},
-                    "AUDITORIA EXTERNA": {},
-                    "AVALUOS": {},
-                    "JUNTA DIRECTIVA": {},
-                    "OTROS": {},
-                    "REVISORIA FISCAL": {}
-                },
-                "IMPUESTOS": {
-                    "A LA PROPIEDAD RAIZ": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CERVEZAS": {},
-                    "CIGARRILLOS": {},
-                    "CUOTAS DE FOMENTO": {},
-                    "DE ESPECTACULOS PUBLICOS": {},
-                    "DE TIMBRES": {},
-                    "DE TURISMO": {},
-                    "DE VALORIZACION": {},
-                    "DE VEHICULOS": {},
-                    "DERECHOS SOBRE INSTRUMENTOS PUBLICOS": {},
-                    "INDUSTRIA Y COMERCIO": {},
-                    "IVA DESCONTABLE": {},
-                    "LICORES": {},
-                    "OTROS": {},
-                    "TASA POR UTILIZACION DE PUERTOS": {}
-                },
-                "MANTENIMIENTO Y REPARACIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "PERDIDAS METODO DE PARTICIPACION": {
-                    "DE SOCIEDADES ANONIMAS Y/O ASIMILADAS": {},
-                    "DE SOCIEDADES LIMITADAS Y/O ASIMILADAS": {}
-                },
-                "PROVISIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DEUDORES": {},
-                    "INVENTARIOS": {},
-                    "INVERSIONES": {},
-                    "OTROS ACTIVOS": {},
-                    "PROPIEDADES, PLANTA Y EQUIPO": {}
-                },
-                "SEGUROS": {
-                    "AJUSTES POR INFLACION": {},
-                    "CORRIENTE DEBIL": {},
-                    "CUMPLIMIENTO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "INCENDIO": {},
-                    "LUCRO CESANTE": {},
-                    "MANEJO": {},
-                    "OBLIGATORIO ACCIDENTE DE TRANSITO": {},
-                    "OTROS": {},
-                    "RESPONSABILIDAD CIVIL Y EXTRACONTRACTUAL": {},
-                    "ROTURA DE MAQUINARIA": {},
-                    "SUSTRACCION Y HURTO": {},
-                    "TERREMOTO": {},
-                    "VIDA COLECTIVA": {},
-                    "VUELO": {}
-                },
-                "SERVICIOS": {
-                    "ACUEDUCTO Y ALCANTARILLADO": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ASEO Y VIGILANCIA": {},
-                    "ASISTENCIA TECNICA": {},
-                    "CORREO, PORTES Y TELEGRAMAS": {},
-                    "ENERGIA ELECTRICA": {},
-                    "FAX Y TELEX": {},
-                    "GAS": {},
-                    "OTROS": {},
-                    "PROCESAMIENTO ELECTRONICO DE DATOS": {},
-                    "PUBLICIDAD, PROPAGANDA Y PROMOCION": {},
-                    "TELEFONO": {},
-                    "TEMPORALES": {},
-                    "TRANSPORTE, FLETES Y ACARREOS": {}
-                }
-            },
-            "root_type": "Expense"
-        },
-        "INGRESOS": {
-            "AJUSTES POR INFLACION": {
-                "CORRECCION MONETARIA": {
-                    "ACTIVOS DIFERIDOS": {},
-                    "AGOTAMIENTO ACUMULADO (DB)": {},
-                    "AMORTIZACION ACUMULADA (DB)": {},
-                    "COMPRAS (CR)": {},
-                    "COSTO DE VENTAS (CR)": {},
-                    "COSTOS DE PRODUCCION O DE OPERACION (CR)": {},
-                    "DEPRECIACION ACUMULADA (DB)": {},
-                    "DEPRECIACION DIFERIDA (CR)": {},
-                    "DEVOLUCIONES EN COMPRAS (DB)": {},
-                    "DEVOLUCIONES EN VENTAS (CR)": {},
-                    "GASTOS NO OPERACIONALES (CR)": {},
-                    "GASTOS OPERACIONALES DE ADMINISTRACION (CR)": {},
-                    "GASTOS OPERACIONALES DE VENTAS (CR)": {},
-                    "INGRESOS NO OPERACIONALES (DB)": {},
-                    "INGRESOS OPERACIONALES (DB)": {},
-                    "INTANGIBLES (CR)": {},
-                    "INVENTARIOS (CR)": {},
-                    "INVERSIONES (CR)": {},
-                    "OTROS ACTIVOS (CR)": {},
-                    "PASIVOS SUJETOS DE AJUSTE": {},
-                    "PATRIMONIO": {},
-                    "PROPIEDADES, PLANTA Y EQUIPO (CR)": {}
-                }
-            },
-            "NO OPERACIONALES": {
-                "ARRENDAMIENTOS": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AERODROMOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CONSTRUCCIONES Y EDIFICIOS": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {}
-                },
-                "COMISIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE ACTIVIDADES FINANCIERAS": {},
-                    "DE CONCESIONARIOS": {},
-                    "DERECHOS DE AUTOR": {},
-                    "DERECHOS DE PROGRAMACION": {},
-                    "POR DISTRIBUCION DE PELICULAS": {},
-                    "POR INGRESOS PARA TERCEROS": {},
-                    "POR VENTA DE SEGUROS": {},
-                    "POR VENTA DE SERVICIOS DE TALLER": {},
-                    "SOBRE INVERSIONES": {}
-                },
-                "DEVOLUCIONES EN OTRAS VENTAS (DB)": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "DIVERSOS": {
-                    "AJUSTE AL PESO": {},
-                    "AJUSTES POR INFLACION": {},
-                    "APROVECHAMIENTOS": {
-                        "APROVECHAMIENTOS": {}
-                    },
-                    "AUXILIOS": {},
-                    "BONIFICACIONES": {},
-                    "CAPACITACION DISTRIBUIDORES": {},
-                    "CERT": {},
-                    "DE ESCRITURACION": {},
-                    "DE LA ACTIVIDAD GANADERA": {},
-                    "DECORACIONES": {},
-                    "DERECHOS Y LICITACIONES": {},
-                    "DERIVADOS DE LAS EXPORTACIONES": {},
-                    "EXCEDENTES": {},
-                    "HISTORIA CLINICA": {},
-                    "INGRESOS POR ELEMENTOS PERDIDOS": {},
-                    "INGRESOS POR INVESTIGACION Y DESARROLLO": {},
-                    "LLAMADAS TELEFONICAS": {},
-                    "MANEJO DE CARGA": {},
-                    "MULTAS Y RECARGOS": {},
-                    "OTROS": {},
-                    "OTROS INGRESOS DE EXPLOTACION": {},
-                    "POR TRABAJOS EJECUTADOS": {},
-                    "PREAVISOS DESCONTADOS": {},
-                    "PREMIOS": {},
-                    "PRODUCTOS DESCONTADOS": {},
-                    "RECLAMOS": {},
-                    "RECOBRO DE DANOS": {},
-                    "RECONOCIMIENTOS ISS": {},
-                    "REGALIAS": {},
-                    "REGISTRO PROMESAS DE VENTA": {},
-                    "RESULTADOS, MATRICULAS Y TRASPASOS": {},
-                    "SOBRANTES DE CAJA": {},
-                    "SOBRANTES EN LIQUIDACION FLETES": {},
-                    "SUBSIDIOS ESTATALES": {},
-                    "SUBVENCIONES": {},
-                    "UTILES, PAPELERIA Y FOTOCOPIAS": {
-                        "UTILES, PAPELERIA Y FOTOCOPIAS": {}
-                    }
-                },
-                "DIVIDENDOS Y PARTICIPACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE SOCIEDADES ANONIMAS Y/O ASIMILADAS": {},
-                    "DE SOCIEDADES LIMITADAS Y/O ASIMILADAS": {}
-                },
-                "FINANCIEROS": {
-                    "ACEPTACIONES BANCARIAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "COMISIONES CHEQUES DE OTRAS PLAZAS": {},
-                    "DESCUENTOS AMORTIZADOS": {},
-                    "DESCUENTOS BANCARIOS": {},
-                    "DESCUENTOS COMERCIALES CONDICIONADOS": {},
-                    "DIFERENCIA EN CAMBIO": {},
-                    "FINANCIACION SISTEMAS DE VIAJES": {},
-                    "FINANCIACION VEHICULOS": {},
-                    "INTERESES": {},
-                    "MULTAS Y RECARGOS": {},
-                    "OTROS": {},
-                    "REAJUSTE MONETARIO-UPAC (HOY UVR)": {},
-                    "SANCIONES CHEQUES DEVUELTOS": {}
-                },
-                "HONORARIOS": {
-                    "ADMINISTRACION DE VINCULADAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ASESORIAS": {},
-                    "ASISTENCIA TECNICA": {}
-                },
-                "INDEMNIZACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DANO EMERGENTE COMPANIAS DE SEGUROS": {},
-                    "DE TERCEROS": {},
-                    "LUCRO CESANTE COMPANIAS DE SEGUROS": {},
-                    "OTRAS": {},
-                    "POR INCAPACIDADES ISS": {},
-                    "POR INCUMPLIMIENTO DE CONTRATOS": {},
-                    "POR PERDIDA DE MERCANCIA": {},
-                    "POR SINIESTRO": {},
-                    "POR SUMINISTROS": {}
-                },
-                "INGRESOS DE EJERCICIOS ANTERIORES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "INGRESOS METODO DE PARTICIPACION": {
-                    "DE SOCIEDADES ANONIMAS Y/O ASIMILADAS": {},
-                    "DE SOCIEDADES LIMITADAS Y/O ASIMILADAS": {}
-                },
-                "OTRAS VENTAS": {
-                    "AJUSTES POR INFLACION": {},
-                    "COMBUSTIBLES Y LUBRICANTES": {},
-                    "DE PROPAGANDA": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EXCEDENTES DE EXPORTACION": {},
-                    "MATERIA PRIMA": {},
-                    "MATERIAL DE DESECHO": {},
-                    "MATERIALES VARIOS": {},
-                    "PRODUCTOS AGRICOLAS": {},
-                    "PRODUCTOS DE DIVERSIFICACION": {},
-                    "PRODUCTOS EN REMATE": {}
-                },
-                "PARTICIPACIONES EN CONCESIONES": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "RECUPERACIONES": {
-                    "AJUSTES POR INFLACION": {},
-                    "DE DEPRECIACION": {},
-                    "DE PROVISIONES": {},
-                    "DESCUENTOS CONCEDIDOS": {},
-                    "DEUDAS MALAS": {},
-                    "GASTOS BANCARIOS": {},
-                    "RECLAMOS": {},
-                    "REINTEGRO DE OTROS COSTOS Y GASTOS": {},
-                    "REINTEGRO GARANTIAS": {},
-                    "REINTEGRO POR PERSONAL EN COMISION": {},
-                    "SEGUROS": {}
-                },
-                "SERVICIOS": {
-                    "ADMINISTRATIVOS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "AL PERSONAL": {},
-                    "DE BASCULA": {},
-                    "DE CASINO": {},
-                    "DE COMPUTACION": {},
-                    "DE MANTENIMIENTO": {},
-                    "DE PRENSA": {},
-                    "DE RECEPCION DE AERONAVES": {},
-                    "DE TELEFAX": {},
-                    "DE TRANSPORTE": {},
-                    "DE TRANSPORTE PROGRAMA GAS NATURAL": {},
-                    "DE TRILLA": {},
-                    "ENTRE COMPANIAS": {},
-                    "FLETES": {},
-                    "OTROS": {},
-                    "POR CONTRATOS": {},
-                    "TALLER DE VEHICULOS": {},
-                    "TECNICOS": {}
-                },
-                "UTILIDAD EN VENTA DE INVERSIONES": {
-                    "ACCIONES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "BONOS": {},
-                    "CEDULAS": {},
-                    "CERTIFICADOS": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "DERECHOS FIDUCIARIOS": {},
-                    "OBLIGATORIAS": {},
-                    "OTRAS": {},
-                    "PAPELES COMERCIALES": {},
-                    "TITULOS": {}
-                },
-                "UTILIDAD EN VENTA DE OTROS BIENES": {
-                    "AJUSTES POR INFLACION": {},
-                    "INTANGIBLES": {},
-                    "OTROS ACTIVOS": {}
-                },
-                "UTILIDAD EN VENTA DE PROPIEDADES, PLANTA Y EQUIPO": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES EN CURSO": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA EN MONTAJE": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "MATERIALES INDUSTRIA PETROLERA": {},
-                    "MINAS Y CANTERAS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {},
-                    "YACIMIENTOS": {}
-                }
-            },
-            "OPERACIONALES": {
-                "ACTIVIDAD FINANCIERA": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "COMISIONES": {},
-                    "CUOTAS DE ADMINISTRACION-CONSORCIOS": {},
-                    "CUOTAS DE INGRESO O RETIRO-SOCIEDAD ADMINISTRADORA": {},
-                    "CUOTAS DE INSCRIPCION-CONSORCIOS": {},
-                    "DIVIDENDOS DE SOCIEDADES ANONIMAS Y/O ASIMILADAS": {},
-                    "ELIMINACION DE SUSCRIPTORES-CONSORCIOS": {},
-                    "INGRESOS METODO DE PARTICIPACION": {},
-                    "INSCRIPCIONES Y CUOTAS": {},
-                    "INTERESES": {},
-                    "OPERACIONES DE DESCUENTO": {},
-                    "PARTICIPACIONES DE SOCIEDADES LIMITADAS Y/O ASIMILADAS": {},
-                    "REAJUSTE DEL SISTEMA-CONSORCIOS": {},
-                    "REAJUSTE MONETARIO-UPAC (HOY UVR)": {},
-                    "RECUPERACION DE GARANTIAS": {},
-                    "SERVICIOS A COMISIONISTAS": {},
-                    "VENTA DE INVERSIONES": {}
-                },
-                "ACTIVIDADES INMOBILIARIAS, EMPRESARIALES Y DE ALQUILER": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES EMPRESARIALES DE CONSULTORIA": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALQUILER DE EFECTOS PERSONALES Y ENSERES DOMESTICOS": {},
-                    "ALQUILER EQUIPO DE TRANSPORTE": {},
-                    "ALQUILER MAQUINARIA Y EQUIPO": {},
-                    "ARRENDAMIENTOS DE BIENES INMUEBLES": {},
-                    "CONSULTORIA EN EQUIPO Y PROGRAMAS DE INFORMATICA": {},
-                    "DOTACION DE PERSONAL": {},
-                    "ENVASE Y EMPAQUE": {},
-                    "FOTOCOPIADO": {},
-                    "FOTOGRAFIA": {},
-                    "INMOBILIARIAS POR RETRIBUCION O CONTRATA": {},
-                    "INVESTIGACION Y SEGURIDAD": {},
-                    "INVESTIGACIONES CIENTIFICAS Y DE DESARROLLO": {},
-                    "LIMPIEZA DE INMUEBLES": {},
-                    "MANTENIMIENTO Y REPARACION DE MAQUINARIA DE OFICINA": {},
-                    "MANTENIMIENTO Y REPARACION DE MAQUINARIA Y EQUIPO": {},
-                    "PROCESAMIENTO DE DATOS": {},
-                    "PUBLICIDAD": {}
-                },
-                "AGRICULTURA, GANADERIA, CAZA Y SILVICULTURA": {
-                    "ACTIVIDAD DE CAZA": {},
-                    "ACTIVIDAD DE SILVICULTURA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CRIA DE GANADO CABALLAR Y VACUNO": {},
-                    "CRIA DE OTROS ANIMALES": {},
-                    "CRIA DE OVEJAS, CABRAS, ASNOS, MULAS Y BURDEGANOS": {},
-                    "CULTIVO DE ALGODON Y PLANTAS PARA MATERIAL TEXTIL": {},
-                    "CULTIVO DE BANANO": {},
-                    "CULTIVO DE CAFE": {},
-                    "CULTIVO DE CANA DE AZUCAR": {},
-                    "CULTIVO DE CEREALES": {},
-                    "CULTIVO DE FLORES": {},
-                    "CULTIVOS DE FRUTAS, NUECES Y PLANTAS AROMATICAS": {},
-                    "CULTIVOS DE HORTALIZAS, LEGUMBRES Y PLANTAS ORNAMENTALES": {},
-                    "OTROS CULTIVOS AGRICOLAS": {},
-                    "PRODUCCION AVICOLA": {},
-                    "SERVICIOS AGRICOLAS Y GANADEROS": {}
-                },
-                "COMERCIO AL POR MAYOR Y AL POR MENOR": {
-                    "AJUSTES POR INFLACION": {},
-                    "MANTENIMIENTO, REPARACION Y LAVADO DE VEHICULOS AUTOMOTORES": {},
-                    "REPARACION DE EFECTOS PERSONALES Y ELECTRODOMESTICOS": {},
-                    "VENTA A CAMBIO DE RETRIBUCION O POR CONTRATA": {},
-                    "VENTA DE ANIMALES VIVOS Y CUEROS": {},
-                    "VENTA DE ARTICULOS EN CACHARRERIAS Y MISCELANEAS": {},
-                    "VENTA DE ARTICULOS EN CASAS DE EMPENO Y PRENDERIAS": {},
-                    "VENTA DE ARTICULOS EN RELOJERIAS Y JOYERIAS": {},
-                    "VENTA DE COMBUSTIBLES SOLIDOS, LIQUIDOS, GASEOSOS": {},
-                    "VENTA DE CUBIERTOS, VAJILLAS, CRISTALERIA, PORCELANAS, CERAMICAS Y OTROS ARTICULOS DE USO DOMESTICO": {},
-                    "VENTA DE ELECTRODOMESTICOS Y MUEBLES": {},
-                    "VENTA DE EMPAQUES": {},
-                    "VENTA DE EQUIPO FOTOGRAFICO": {},
-                    "VENTA DE EQUIPO OPTICO Y DE PRECISION": {},
-                    "VENTA DE EQUIPO PROFESIONAL Y CIENTIFICO": {},
-                    "VENTA DE HERRAMIENTAS Y ARTICULOS DE FERRETERIA": {},
-                    "VENTA DE INSTRUMENTOS MUSICALES": {},
-                    "VENTA DE INSTRUMENTOS QUIRURGICOS Y ORTOPEDICOS": {},
-                    "VENTA DE INSUMOS, MATERIAS PRIMAS AGROPECUARIAS Y FLORES": {},
-                    "VENTA DE JUEGOS, JUGUETES Y ARTICULOS DEPORTIVOS": {},
-                    "VENTA DE LIBROS, REVISTAS, ELEMENTOS DE PAPELERIA, UTILES Y TEXTOS ESCOLARES": {},
-                    "VENTA DE LOTERIAS, RIFAS, CHANCE, APUESTAS Y SIMILARES": {},
-                    "VENTA DE LUBRICANTES, ADITIVOS, LLANTAS Y LUJOS PARA AUTOMOTORES": {},
-                    "VENTA DE MAQUINARIA, EQUIPO DE OFICINA Y PROGRAMAS DE COMPUTADOR": {},
-                    "VENTA DE MATERIALES DE CONSTRUCCION, FONTANERIA Y CALEFACCION": {},
-                    "VENTA DE OTROS INSUMOS Y MATERIAS PRIMAS NO AGROPECUARIAS": {},
-                    "VENTA DE OTROS PRODUCTOS": {
-                        "Ingresos Generales": {}
-                    },
-                    "VENTA DE PAPEL Y CARTON": {},
-                    "VENTA DE PARTES, PIEZAS Y ACCESORIOS DE VEHICULOS AUTOMOTORES": {},
-                    "VENTA DE PINTURAS Y LACAS": {},
-                    "VENTA DE PRODUCTOS AGROPECUARIOS": {},
-                    "VENTA DE PRODUCTOS DE ASEO, FARMACEUTICOS, MEDICINALES, Y ARTICULOS DE TOCADOR": {},
-                    "VENTA DE PRODUCTOS DE VIDRIOS Y MARQUETERIA": {},
-                    "VENTA DE PRODUCTOS EN ALMACENES NO ESPECIALIZADOS": {},
-                    "VENTA DE PRODUCTOS INTERMEDIOS, DESPERDICIOS Y DESECHOS": {},
-                    "VENTA DE PRODUCTOS TEXTILES, DE VESTIR, DE CUERO Y CALZADO": {},
-                    "VENTA DE QUIMICOS": {},
-                    "VENTA DE VEHICULOS AUTOMOTORES": {}
-                },
-                "CONSTRUCCION": {
-                    "ACONDICIONAMIENTO DE EDIFICIOS": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALQUILER DE EQUIPO CON OPERARIOS": {},
-                    "CONSTRUCCION DE EDIFICIOS Y OBRAS DE INGENIERIA CIVIL": {},
-                    "PREPARACION DE TERRENOS": {},
-                    "TERMINACION DE EDIFICACIONES": {}
-                },
-                "DEVOLUCIONES EN VENTAS (DB)": {
-                    "AJUSTES POR INFLACION": {}
-                },
-                "ENSENANZA": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES RELACIONADAS CON LA EDUCACION": {},
-                    "AJUSTES POR INFLACION": {}
-                },
-                "EXPLOTACION DE MINAS Y CANTERAS": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CARBON": {},
-                    "GAS NATURAL": {},
-                    "MINERALES DE HIERRO": {},
-                    "MINERALES METALIFEROS NO FERROSOS": {},
-                    "ORO": {},
-                    "OTRAS MINAS Y CANTERAS": {},
-                    "PETROLEO CRUDO": {},
-                    "PIEDRA, ARENA Y ARCILLA": {},
-                    "PIEDRAS PRECIOSAS": {},
-                    "PRESTACION DE SERVICIOS SECTOR MINERO": {},
-                    "SERVICIOS RELACIONADOS CON EXTRACCION DE PETROLEO Y GAS": {}
-                },
-                "HOTELES Y RESTAURANTES": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "BARES Y CANTINAS": {},
-                    "CAMPAMENTO Y OTROS TIPOS DE HOSPEDAJE": {},
-                    "HOTELERIA": {},
-                    "RESTAURANTES": {}
-                },
-                "INDUSTRIAS MANUFACTURERAS": {
-                    "ACABADO DE PRODUCTOS TEXTILES": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CORTE, TALLADO Y ACABADO DE LA PIEDRA": {},
-                    "CURTIDO, ADOBO O PREPARACION DE CUERO": {},
-                    "EDICIONES Y PUBLICACIONES": {},
-                    "ELABORACION DE ABONOS Y COMPUESTOS DE NITROGENO": {},
-                    "ELABORACION DE ACEITES Y GRASAS": {},
-                    "ELABORACION DE ALIMENTOS PARA ANIMALES": {},
-                    "ELABORACION DE ALMIDONES Y DERIVADOS": {},
-                    "ELABORACION DE APARATOS DE USO DOMESTICO": {},
-                    "ELABORACION DE ARTICULOS DE HORMIGON, CEMENTO Y YESO": {},
-                    "ELABORACION DE ARTICULOS DE MATERIALES TEXTILES": {},
-                    "ELABORACION DE AZUCAR Y MELAZAS": {},
-                    "ELABORACION DE BEBIDAS ALCOHOLICAS Y ALCOHOL ETILICO": {},
-                    "ELABORACION DE BEBIDAS MALTEADAS Y DE MALTA": {},
-                    "ELABORACION DE BEBIDAS NO ALCOHOLICAS": {},
-                    "ELABORACION DE CACAO, CHOCOLATE Y CONFITERIA": {},
-                    "ELABORACION DE CALZADO": {},
-                    "ELABORACION DE CEMENTO, CAL Y YESO": {},
-                    "ELABORACION DE CUERDAS, CORDELES, BRAMANTES Y REDES": {},
-                    "ELABORACION DE EQUIPO DE ILUMINACION": {},
-                    "ELABORACION DE EQUIPO DE OFICINA": {},
-                    "ELABORACION DE FIBRAS": {},
-                    "ELABORACION DE JABONES, DETERGENTES Y PREPARADOS DE TOCADOR": {},
-                    "ELABORACION DE MALETAS, BOLSOS Y SIMILARES": {},
-                    "ELABORACION DE OTROS PRODUCTOS ALIMENTICIOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS DE CAUCHO": {},
-                    "ELABORACION DE OTROS PRODUCTOS DE METAL": {},
-                    "ELABORACION DE OTROS PRODUCTOS MINERALES NO METALICOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS QUIMICOS": {},
-                    "ELABORACION DE OTROS PRODUCTOS TEXTILES": {},
-                    "ELABORACION DE OTROS TIPOS DE EQUIPO ELECTRICO": {},
-                    "ELABORACION DE PASTA Y PRODUCTOS DE MADERA, PAPEL Y CARTON": {},
-                    "ELABORACION DE PASTAS Y PRODUCTOS FARINACEOS": {},
-                    "ELABORACION DE PILAS Y BATERIAS PRIMARIAS": {},
-                    "ELABORACION DE PINTURAS, TINTAS Y MASILLAS": {},
-                    "ELABORACION DE PLASTICO Y CAUCHO SINTETICO": {},
-                    "ELABORACION DE PRENDAS DE VESTIR": {},
-                    "ELABORACION DE PRODUCTOS DE CAFE": {},
-                    "ELABORACION DE PRODUCTOS DE CERAMICA, LOZA, PIEDRA, ARCILLA Y PORCELANA": {},
-                    "ELABORACION DE PRODUCTOS DE HORNO DE COQUE": {},
-                    "ELABORACION DE PRODUCTOS DE LA REFINACION DE PETROLEO": {},
-                    "ELABORACION DE PRODUCTOS DE MOLINERIA": {},
-                    "ELABORACION DE PRODUCTOS DE PLASTICO": {},
-                    "ELABORACION DE PRODUCTOS DE TABACO": {},
-                    "ELABORACION DE PRODUCTOS FARMACEUTICOS Y BOTANICOS": {},
-                    "ELABORACION DE PRODUCTOS LACTEOS": {},
-                    "ELABORACION DE PRODUCTOS PARA PANADERIA": {},
-                    "ELABORACION DE PRODUCTOS QUIMICOS DE USO AGROPECUARIO": {},
-                    "ELABORACION DE SUSTANCIAS QUIMICAS BASICAS": {},
-                    "ELABORACION DE TAPICES Y ALFOMBRAS": {},
-                    "ELABORACION DE TEJIDOS": {},
-                    "ELABORACION DE VIDRIO Y PRODUCTOS DE VIDRIO": {},
-                    "ELABORACION DE VINOS": {},
-                    "FABRICACION DE AERONAVES": {},
-                    "FABRICACION DE APARATOS E INSTRUMENTOS MEDICOS": {},
-                    "FABRICACION DE ARTICULOS DE FERRETERIA": {},
-                    "FABRICACION DE ARTICULOS Y EQUIPO PARA DEPORTE": {},
-                    "FABRICACION DE BICICLETAS Y SILLAS DE RUEDAS": {},
-                    "FABRICACION DE CARROCERIAS PARA AUTOMOTORES": {},
-                    "FABRICACION DE EQUIPOS DE ELEVACION Y MANIPULACION": {},
-                    "FABRICACION DE EQUIPOS DE RADIO, TELEVISION Y COMUNICACIONES": {},
-                    "FABRICACION DE INSTRUMENTOS DE MEDICION Y CONTROL": {},
-                    "FABRICACION DE INSTRUMENTOS DE MUSICA": {},
-                    "FABRICACION DE INSTRUMENTOS DE OPTICA Y EQUIPO FOTOGRAFICO": {},
-                    "FABRICACION DE JOYAS Y ARTICULOS CONEXOS": {},
-                    "FABRICACION DE JUEGOS Y JUGUETES": {},
-                    "FABRICACION DE LOCOMOTORAS Y MATERIAL RODANTE PARA FERROCARRILES": {},
-                    "FABRICACION DE MAQUINARIA Y EQUIPO": {},
-                    "FABRICACION DE MOTOCICLETAS": {},
-                    "FABRICACION DE MUEBLES": {},
-                    "FABRICACION DE OTROS TIPOS DE TRANSPORTE": {},
-                    "FABRICACION DE PARTES PIEZAS Y ACCESORIOS PARA AUTOMOTORES": {},
-                    "FABRICACION DE PRODUCTOS METALICOS PARA USO ESTRUCTURAL": {},
-                    "FABRICACION DE RELOJES": {},
-                    "FABRICACION DE VEHICULOS AUTOMOTORES": {},
-                    "FABRICACION Y REPARACION DE BUQUES Y OTRAS EMBARCACIONES": {},
-                    "FORJA, PRENSADO, ESTAMPADO, LAMINADO DE METAL Y PULVIMETALURGIA": {},
-                    "FUNDICION DE METALES NO FERROSOS": {},
-                    "IMPRESION": {},
-                    "INDUSTRIAS BASICAS Y FUNDICION DE HIERRO Y ACERO": {},
-                    "PREPARACION E HILATURA DE FIBRAS TEXTILES Y TEJEDURIA": {},
-                    "PREPARACION, ADOBO Y TENIDO DE PIELES": {},
-                    "PRODUCCION DE MADERA, ARTICULOS DE MADERA Y CORCHO": {},
-                    "PRODUCCION Y PROCESAMIENTO DE CARNES Y PRODUCTOS CARNICOS": {},
-                    "PRODUCTOS DE FRUTAS, LEGUMBRES Y HORTALIZAS": {},
-                    "PRODUCTOS DE OTRAS INDUSTRIAS MANUFACTURERAS": {},
-                    "PRODUCTOS DE PESCADO": {},
-                    "PRODUCTOS PRIMARIOS DE METALES PRECIOSOS Y DE METALES NO FERROSOS": {},
-                    "RECICLAMIENTO DE DESPERDICIOS": {},
-                    "REPRODUCCION DE GRABACIONES": {},
-                    "REVESTIMIENTO DE METALES Y OBRAS DE INGENIERIA MECANICA": {},
-                    "SERVICIOS RELACIONADOS CON LA EDICION Y LA IMPRESION": {}
-                },
-                "OTRAS ACTIVIDADES DE SERVICIOS COMUNITARIOS, SOCIALES Y PERSONALES": {
-                    "ACTIVIDAD DE RADIO Y TELEVISION": {},
-                    "ACTIVIDAD TEATRAL, MUSICAL Y ARTISTICA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES DE ASOCIACION": {},
-                    "AGENCIAS DE NOTICIAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ELIMINACION DE DESPERDICIOS Y AGUAS RESIDUALES": {},
-                    "ENTRETENIMIENTO Y ESPARCIMIENTO": {},
-                    "EXHIBICION DE FILMES Y VIDEOCINTAS": {},
-                    "GRABACION Y PRODUCCION DE DISCOS": {},
-                    "LAVANDERIAS Y SIMILARES": {},
-                    "PELUQUERIAS Y SIMILARES": {},
-                    "PRODUCCION Y DISTRIBUCION DE FILMES Y VIDEOCINTAS": {},
-                    "SERVICIOS FUNERARIOS": {},
-                    "ZONAS FRANCAS": {}
-                },
-                "PESCA": {
-                    "ACTIVIDAD DE PESCA": {},
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "EXPLOTACION DE CRIADEROS DE PECES": {}
-                },
-                "SERVICIOS SOCIALES Y DE SALUD": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "ACTIVIDADES DE SERVICIOS SOCIALES": {},
-                    "ACTIVIDADES VETERINARIAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "SERVICIO DE LABORATORIO": {},
-                    "SERVICIO HOSPITALARIO": {},
-                    "SERVICIO MEDICO": {},
-                    "SERVICIO ODONTOLOGICO": {}
-                },
-                "SUMINISTRO DE ELECTRICIDAD, GAS Y AGUA": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AJUSTES POR INFLACION": {},
-                    "CAPTACION, DEPURACION Y DISTRIBUCION DE AGUA": {},
-                    "FABRICACION DE GAS Y DISTRIBUCION DE COMBUSTIBLES GASEOSOS": {},
-                    "GENERACION, CAPTACION Y DISTRIBUCION DE ENERGIA ELECTRICA": {}
-                },
-                "TRANSPORTE, ALMACENAMIENTO Y COMUNICACIONES": {
-                    "ACTIVIDADES CONEXAS": {},
-                    "AGENCIAS DE VIAJE": {},
-                    "AJUSTES POR INFLACION": {},
-                    "ALMACENAMIENTO Y DEPOSITO": {},
-                    "MANIPULACION DE CARGA": {},
-                    "OTRAS AGENCIAS DE TRANSPORTE": {},
-                    "SERVICIO DE RADIO Y TELEVISION POR CABLE": {},
-                    "SERVICIO DE TELEGRAFO": {},
-                    "SERVICIO DE TRANSMISION DE DATOS": {},
-                    "SERVICIO DE TRANSPORTE POR CARRETERA": {},
-                    "SERVICIO DE TRANSPORTE POR TUBERIAS": {},
-                    "SERVICIO DE TRANSPORTE POR VIA ACUATICA": {},
-                    "SERVICIO DE TRANSPORTE POR VIA AEREA": {},
-                    "SERVICIO DE TRANSPORTE POR VIA FERREA": {},
-                    "SERVICIO POSTAL Y DE CORREO": {},
-                    "SERVICIO TELEFONICO": {},
-                    "SERVICIOS COMPLEMENTARIOS PARA EL TRANSPORTE": {},
-                    "TRANSMISION DE SONIDO E IMAGENES POR CONTRATO": {}
-                }
-            },
-            "root_type": "Income"
-        },
-        "PASIVO": {
-            "BONOS Y PAPELES COMERCIALES": {
-                "BONOS EN CIRCULACION": {},
-                "BONOS OBLIGATORIAMENTE CONVERTIBLES EN ACCIONES": {},
-                "BONOS PENSIONALES": {
-                    "BONOS PENSIONALES POR AMORTIZAR (DB)": {},
-                    "INTERESES CAUSADOS SOBRE BONOS PENSIONALES": {},
-                    "VALOR BONOS PENSIONALES": {}
-                },
-                "PAPELES COMERCIALES": {},
-                "TITULOS PENSIONALES": {
-                    "INTERESES CAUSADOS SOBRE TITULOS PENSIONALES": {},
-                    "TITULOS PENSIONALES POR AMORTIZAR (DB)": {},
-                    "VALOR TITULOS PENSIONALES": {}
-                }
-            },
-            "CUENTAS POR PAGAR": {
-                "A CASA MATRIZ": {},
-                "A COMPANIAS VINCULADAS": {},
-                "A CONTRATISTAS": {},
-                "ACREEDORES OFICIALES": {},
-                "ACREEDORES VARIOS": {
-                    "COMISIONISTAS DE BOLSAS": {},
-                    "DEPOSITARIOS": {},
-                    "DONACIONES ASIGNADAS POR PAGAR": {},
-                    "FONDO DE PERSEVERANCIA": {},
-                    "FONDOS DE CESANTIAS Y/O PENSIONES": {},
-                    "OTROS": {
-                        "Generica a Pagarr": {}
-                    },
-                    "REINTEGROS POR PAGAR": {},
-                    "SOCIEDAD ADMINISTRADORA-FONDOS DE INVERSION": {}
-                },
-                "COSTOS Y GASTOS POR PAGAR": {
-                    "ARRENDAMIENTOS": {},
-                    "COMISIONES": {},
-                    "GASTOS DE REPRESENTACION Y RELACIONES PUBLICAS": {},
-                    "GASTOS DE VIAJE": {},
-                    "GASTOS FINANCIEROS": {},
-                    "GASTOS LEGALES": {},
-                    "HONORARIOS": {},
-                    "LIBROS, SUSCRIPCIONES, PERIODICOS Y REVISTAS": {},
-                    "OTROS": {},
-                    "SEGUROS": {},
-                    "SERVICIOS ADUANEROS": {},
-                    "SERVICIOS DE MANTENIMIENTO": {},
-                    "SERVICIOS PUBLICOS": {},
-                    "SERVICIOS TECNICOS": {},
-                    "TRANSPORTES, FLETES Y ACARREOS": {}
-                },
-                "CUENTAS CORRIENTES COMERCIALES": {},
-                "CUOTAS POR DEVOLVER": {},
-                "DEUDAS CON ACCIONISTAS O SOCIOS": {
-                    "ACCIONISTAS": {},
-                    "SOCIOS": {}
-                },
-                "DEUDAS CON DIRECTORES": {},
-                "DIVIDENDOS O PARTICIPACIONES POR PAGAR": {
-                    "DIVIDENDOS": {
-                        "LIGINA MARINA CANELON CASTELLANOS": {}
-                    },
-                    "PARTICIPACIONES": {}
-                },
-                "IMPUESTO A LAS VENTAS RETENIDO": {
-                    "IMPUESTO A LAS VENTAS RETENIDO": {
-                        "IMPUESTO A LAS VENTAS RETENIDO": {}
-                    }
-                },
-                "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {
-                    "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {
-                        "IMPUESTO DE INDUSTRIA Y COMERCIO RETENIDO": {}
-                    }
-                },
-                "INSTALAMENTOS POR PAGAR": {},
-                "ORDENES DE COMPRA POR UTILIZAR": {},
-                "REGALIAS POR PAGAR": {},
-                "RETENCION EN LA FUENTE": {
-                    "ARRENDAMIENTOS": {
-                        "ARRENDAMIENTOS BIENES INMUEBLES": {}
-                    },
-                    "AUTORRETENCIONES": {},
-                    "COMISIONES": {
-                        "COMISIONES": {}
-                    },
-                    "COMPRAS": {
-                        "COMPRAS GRAL": {}
-                    },
-                    "DIVIDENDOS Y/O PARTICIPACIONES": {},
-                    "ENAJENACION PROPIEDADES PLANTA Y EQUIPO, PERSONAS NATURALES": {},
-                    "HONORARIOS": {
-                        "RETEFTE HONORARIOS 10%": {},
-                        "RETEFTE HONORARIOS 11%": {}
-                    },
-                    "LOTERIAS, RIFAS, APUESTAS Y SIMILARES": {},
-                    "OTRAS RETENCIONES Y PATRIMONIO": {
-                        "OTRAS RETENCIONES Y PATRIMONIO": {}
-                    },
-                    "PAGO DIAN RETENCIONES": {
-                        "PAGO DIAN RETENCIONES": {}
-                    },
-                    "POR IMPUESTO DE TIMBRE": {},
-                    "POR INGRESOS OBTENIDOS EN EL EXTERIOR": {},
-                    "POR PAGOS AL EXTERIOR": {},
-                    "RENDIMIENTOS FINANCIEROS": {},
-                    "SALARIOS Y PAGOS LABORALES": {
-                        "SALARIOS Y PAGOS LABORALES": {}
-                    },
-                    "SERVICIOS": {
-                        "ASEO Y/O VIGILANCIA": {},
-                        "DE HOTEL, RESTAURANTE Y HOSPEDAJE": {},
-                        "SERVICIOS GRAL DECLARANTES": {},
-                        "SERVICIOS GRAL NO DECLARANTES": {},
-                        "SERVICIOS TEMPORALES": {},
-                        "TRANSPORTE DE CARGA": {},
-                        "TRANSPORTE DE PASAJEROS TERRESTRE": {}
-                    }
-                },
-                "RETENCIONES Y APORTES DE NOMINA": {
-                    "APORTES A ADMINISTRADORAS DE RIESGOS PROFESIONALES, ARP": {},
-                    "APORTES A ENTIDADES PROMOTORAS DE SALUD, EPS": {},
-                    "APORTES AL FIC": {},
-                    "APORTES AL ICBF, SENA Y CAJAS DE COMPENSACION": {},
-                    "COOPERATIVAS": {},
-                    "EMBARGOS JUDICIALES": {},
-                    "FONDOS": {},
-                    "LIBRANZAS": {},
-                    "OTROS": {},
-                    "SINDICATOS": {}
-                }
-            },
-            "DIFERIDOS": {
-                "ABONOS DIFERIDOS": {
-                    "REAJUSTE DEL SISTEMA": {}
-                },
-                "CREDITO POR CORRECCION MONETARIA DIFERIDA": {},
-                "IMPUESTOS DIFERIDOS": {
-                    "AJUSTES POR INFLACION": {},
-                    "DIVERSOS": {},
-                    "POR DEPRECIACION FLEXIBLE": {}
-                },
-                "INGRESOS RECIBIDOS POR ANTICIPADO": {
-                    "ARRENDAMIENTOS": {},
-                    "COMISIONES": {},
-                    "CUOTAS DE ADMINISTRACION": {},
-                    "DE SUSCRIPTORES": {},
-                    "HONORARIOS": {},
-                    "INTERESES": {},
-                    "MATRICULAS Y PENSIONES": {},
-                    "MERCANCIA EN TRANSITO YA VENDIDA": {},
-                    "OTROS": {},
-                    "SERVICIOS TECNICOS": {},
-                    "TRANSPORTES, FLETES Y ACARREOS": {}
-                },
-                "UTILIDAD DIFERIDA EN VENTAS A PLAZOS": {}
-            },
-            "IMPUESTOS, GRAVAMENES Y TASAS": {
-                "A LA PROPIEDAD RAIZ": {},
-                "A LAS EXPORTACIONES CAFETERAS": {},
-                "A LAS IMPORTACIONES": {},
-                "AL AZAR Y JUEGOS": {},
-                "AL SACRIFICIO DE GANADO": {},
-                "CUOTAS DE FOMENTO": {},
-                "DE ESPECTACULOS PUBLICOS": {},
-                "DE HIDROCARBUROS Y MINAS": {
-                    "DE HIDROCARBUROS": {},
-                    "DE MINAS": {}
-                },
-                "DE INDUSTRIA Y COMERCIO": {
-                    "VIGENCIA FISCAL CORRIENTE": {
-                        "IMPUESTO GENERADO": {},
-                        "IMPUESTOS DESCOTABLES": {},
-                        "IMPUESTOS RETENIDOS": {},
-                        "PAGOS SECRETARIA DE HACIENDA DISTRITAL": {}
-                    },
-                    "VIGENCIAS FISCALES ANTERIORES": {}
-                },
-                "DE LICORES, CERVEZAS Y CIGARRILLOS": {
-                    "DE CERVEZAS": {},
-                    "DE CIGARRILLOS": {},
-                    "DE LICORES": {}
-                },
-                "DE RENTA Y COMPLEMENTARIOS": {
-                    "VIGENCIA FISCAL CORRIENTE": {},
-                    "VIGENCIAS FISCALES ANTERIORES": {}
-                },
-                "DE TURISMO": {},
-                "DE VALORIZACION": {
-                    "VIGENCIA FISCAL CORRIENTE": {},
-                    "VIGENCIAS FISCALES ANTERIORES": {}
-                },
-                "DE VEHICULOS": {
-                    "VIGENCIA FISCAL CORRIENTE": {},
-                    "VIGENCIAS FISCALES ANTERIORES": {}
-                },
-                "DERECHOS SOBRE INSTRUMENTOS PUBLICOS": {},
-                "GRAVAMENES Y REGALIAS POR UTILIZACION DEL SUELO": {},
-                "IMPUESTO SOBRE LAS VENTAS POR PAGAR": {
-                    "IVA DESCONTABLE": {
-                        "IVA DESCONTABLE": {}
-                    },
-                    "IVA GENERADO": {
-                        "IVA GENERADO": {}
-                    },
-                    "IVA RETENIDO": {
-                        "IVA RETENIDO": {}
-                    },
-                    "PAGOS DIAN": {
-                        "PAGOS DIAN": {}
-                    }
-                },
-                "OTROS": {},
-                "REGALIAS E IMPUESTOS A LA PEQUENA Y MEDIANA MINERIA": {},
-                "TASA POR UTILIZACION DE PUERTOS": {}
-            },
-            "OBLIGACIONES FINANCIERAS": {
-                "BANCOS DEL EXTERIOR": {
-                    "ACEPTACIONES BANCARIAS": {},
-                    "CARTAS DE CREDITO": {},
-                    "PAGARES": {},
-                    "SOBREGIROS": {}
-                },
-                "BANCOS NACIONALES": {
-                    "ACEPTACIONES BANCARIAS": {},
-                    "CARTAS DE CREDITO": {},
-                    "PAGARES": {
-                        "BANCOLOMBIA MORATO": {}
-                    },
-                    "SOBREGIROS": {}
-                },
-                "COMPANIAS DE FINANCIAMIENTO COMERCIAL": {
-                    "ACEPTACIONES FINANCIERAS": {},
-                    "CONTRATOS DE ARRENDAMIENTO FINANCIERO (LEASING)": {},
-                    "PAGARES": {}
-                },
-                "COMPROMISOS DE RECOMPRA DE CARTERA NEGOCIADA": {},
-                "COMPROMISOS DE RECOMPRA DE INVERSIONES NEGOCIADAS": {
-                    "ACCIONES": {},
-                    "ACEPTACIONES BANCARIAS O FINANCIERAS": {},
-                    "BONOS": {},
-                    "CEDULAS": {},
-                    "CERTIFICADOS": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "OTROS": {},
-                    "PAPELES COMERCIALES": {},
-                    "TITULOS": {}
-                },
-                "CORPORACIONES DE AHORRO Y VIVIENDA": {
-                    "HIPOTECARIAS": {},
-                    "PAGARES": {},
-                    "SOBREGIROS": {}
-                },
-                "CORPORACIONES FINANCIERAS": {
-                    "ACEPTACIONES FINANCIERAS": {},
-                    "CARTAS DE CREDITO": {},
-                    "CONTRATOS DE ARRENDAMIENTO FINANCIERO (LEASING)": {},
-                    "PAGARES": {}
-                },
-                "ENTIDADES FINANCIERAS DEL EXTERIOR": {},
-                "OBLIGACIONES GUBERNAMENTALES": {
-                    "ENTIDADES OFICIALES": {},
-                    "GOBIERNO NACIONAL": {}
-                },
-                "OTRAS OBLIGACIONES": {
-                    "CASA MATRIZ": {},
-                    "COMPANIAS VINCULADAS": {},
-                    "DIRECTORES": {},
-                    "FONDOS Y COOPERATIVAS": {},
-                    "OTRAS": {},
-                    "PARTICULARES": {
-                        "PARTICULARES": {}
-                    },
-                    "SOCIOS O ACCIONISTAS": {}
-                }
-            },
-            "OBLIGACIONES LABORALES": {
-                "CESANTIAS CONSOLIDADAS": {
-                    "LEY 50 DE 1990 Y NORMAS POSTERIORES": {},
-                    "LEY LABORAL ANTERIOR": {}
-                },
-                "CUOTAS PARTES PENSIONES DE JUBILACION": {},
-                "INDEMNIZACIONES LABORALES": {},
-                "INTERESES SOBRE CESANTIAS": {},
-                "PENSIONES POR PAGAR": {},
-                "PRESTACIONES EXTRALEGALES": {
-                    "AUXILIOS": {},
-                    "BONIFICACIONES": {},
-                    "DOTACION Y SUMINISTRO A TRABAJADORES": {},
-                    "OTRAS": {},
-                    "PRIMAS": {},
-                    "SEGUROS": {}
-                },
-                "PRIMA DE SERVICIOS": {},
-                "SALARIOS POR PAGAR": {},
-                "VACACIONES CONSOLIDADAS": {}
-            },
-            "OTROS PASIVOS": {
-                "ACREEDORES DEL SISTEMA": {
-                    "CUOTAS NETAS": {},
-                    "GRUPOS EN FORMACION": {}
-                },
-                "ANTICIPOS Y AVANCES RECIBIDOS": {
-                    "DE CLIENTES": {},
-                    "OTROS": {},
-                    "PARA OBRAS EN PROCESO": {},
-                    "SOBRE CONTRATOS": {}
-                },
-                "CUENTAS DE OPERACION CONJUNTA": {},
-                "CUENTAS EN PARTICIPACION": {},
-                "DEPOSITOS RECIBIDOS": {
-                    "DE LICITACIONES": {},
-                    "DE MANEJO DE BIENES": {},
-                    "FONDO DE RESERVA": {},
-                    "OTROS": {},
-                    "PARA FUTURA SUSCRIPCION DE ACCIONES": {},
-                    "PARA FUTURO PAGO DE CUOTAS O DERECHOS SOCIALES": {},
-                    "PARA GARANTIA DE CONTRATOS": {},
-                    "PARA GARANTIA EN LA PRESTACION DE SERVICIOS": {}
-                },
-                "DIVERSOS": {
-                    "PRESTAMOS DE PRODUCTOS": {},
-                    "PROGRAMA DE EXTENSION AGROPECUARIA": {},
-                    "REEMBOLSO DE COSTOS EXPLORATORIOS": {}
-                },
-                "EMBARGOS JUDICIALES": {
-                    "DEPOSITOS JUDICIALES": {},
-                    "INDEMNIZACIONES": {}
-                },
-                "INGRESOS RECIBIDOS PARA TERCEROS": {
-                    "VALORES RECIBIDOS PARA TERCEROS": {},
-                    "VENTA POR CUENTA DE TERCEROS": {}
-                },
-                "RETENCIONES A TERCEROS SOBRE CONTRATOS": {
-                    "CUMPLIMIENTO OBLIGACIONES LABORALES": {},
-                    "GARANTIA CUMPLIMIENTO DE CONTRATOS": {},
-                    "PARA ESTABILIDAD DE OBRA": {}
-                }
-            },
-            "PASIVOS ESTIMADOS Y PROVISIONES": {
-                "PARA CONTINGENCIAS": {
-                    "ADMINISTRATIVOS": {},
-                    "CIVILES": {},
-                    "COMERCIALES": {},
-                    "INTERESES POR MULTAS Y SANCIONES": {},
-                    "LABORALES": {},
-                    "MULTAS Y SANCIONES AUTORIDADES ADMINISTRATIVAS": {},
-                    "OTRAS": {},
-                    "PENALES": {},
-                    "RECLAMOS": {}
-                },
-                "PARA COSTOS Y GASTOS": {
-                    "COMISIONES": {},
-                    "GARANTIAS": {},
-                    "GASTOS DE VIAJE": {},
-                    "HONORARIOS": {},
-                    "INTERESES": {},
-                    "MATERIALES Y REPUESTOS": {},
-                    "OTROS": {},
-                    "REGALIAS": {},
-                    "SERVICIOS PUBLICOS": {},
-                    "SERVICIOS TECNICOS": {},
-                    "TRANSPORTES, FLETES Y ACARREOS": {}
-                },
-                "PARA MANTENIMIENTO Y REPARACIONES": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "OTROS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {}
-                },
-                "PARA OBLIGACIONES DE GARANTIAS": {},
-                "PARA OBLIGACIONES FISCALES": {
-                    "DE HIDROCARBUROS Y MINAS": {},
-                    "DE INDUSTRIA Y COMERCIO": {},
-                    "DE RENTA Y COMPLEMENTARIOS": {},
-                    "DE VEHICULOS": {},
-                    "OTROS": {},
-                    "TASA POR UTILIZACION DE PUERTOS": {}
-                },
-                "PARA OBLIGACIONES LABORALES": {
-                    "CESANTIAS": {},
-                    "INTERESES SOBRE CESANTIAS": {},
-                    "OTRAS": {},
-                    "PRESTACIONES EXTRALEGALES": {},
-                    "PRIMA DE SERVICIOS": {},
-                    "VACACIONES": {},
-                    "VIATICOS": {}
-                },
-                "PARA OBRAS DE URBANISMO": {
-                    "ACUEDUCTO Y ALCANTARILLADO": {},
-                    "ENERGIA ELECTRICA": {},
-                    "OTROS": {},
-                    "TELEFONOS": {}
-                },
-                "PENSIONES DE JUBILACION": {
-                    "CALCULO ACTUARIAL PENSIONES DE JUBILACION": {},
-                    "PENSIONES DE JUBILACION POR AMORTIZAR (DB)": {}
-                },
-                "PROVISIONES DIVERSAS": {
-                    "AUTOSEGURO": {},
-                    "OTRAS": {},
-                    "PARA AJUSTES EN REDENCION DE UNIDADES": {},
-                    "PARA BENEFICENCIA": {},
-                    "PARA COMUNICACIONES": {},
-                    "PARA OPERACION": {},
-                    "PARA PERDIDA EN TRANSPORTE": {},
-                    "PARA PROTECCION DE BIENES AGOTABLES": {},
-                    "PLANES Y PROGRAMAS DE REFORESTACION Y ELECTRIFICACION": {}
-                }
-            },
-            "PROVEEDORES": {
-                "CASA MATRIZ": {},
-                "COMPANIAS VINCULADAS": {},
-                "CUENTAS CORRIENTES COMERCIALES": {},
-                "DEL EXTERIOR": {
-                    "PROVEEDORES EXTRANJEROS CXP": {
-                        "PROVEEDORES EXTRANJEROS CXP": {}
-                    }
-                },
-                "NACIONALES": {
-                    "PROVEEDORES NACIONALES CXP": {
-                        "PROVEEDORES NACIONALES CXP": {}
-                    }
-                }
-            },
-            "root_type": "Liability"
-        },
-        "PATRIMONIO": {
-            "CAPITAL SOCIAL": {
-                "APORTES DEL ESTADO": {},
-                "APORTES SOCIALES": {
-                    "APORTES DE SOCIOS-FONDO MUTUO DE INVERSION": {},
-                    "CONTRIBUCION DE LA EMPRESA-FONDO MUTUO DE INVERSION": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "SUSCRIPCIONES DEL PUBLICO": {}
-                },
-                "CAPITAL ASIGNADO": {},
-                "CAPITAL DE PERSONAS NATURALES": {},
-                "CAPITAL SUSCRITO Y PAGADO": {
-                    "CAPITAL AUTORIZADO": {},
-                    "CAPITAL POR SUSCRIBIR (DB)": {},
-                    "CAPITAL SUSCRITO POR COBRAR (DB)": {},
-                    "CAPITAL SUSCRITO Y PAGADO": {
-                        "CAPITAL SUSCRITO Y PAGADO": {}
-                    }
-                },
-                "FONDO SOCIAL": {},
-                "INVERSION SUPLEMENTARIA AL CAPITAL ASIGNADO": {}
-            },
-            "DIVIDENDOS O PARTICIPACIONES DECRETADOS EN ACCIONES, CUOTAS O PARTES DE INTERES SOCIAL": {
-                "DIVIDENDOS DECRETADOS EN ACCIONES": {},
-                "PARTICIPACIONES DECRETADAS EN CUOTAS O PARTES DE INTERES SOCIAL": {}
-            },
-            "RESERVAS": {
-                "RESERVAS ESTATUTARIAS": {
-                    "OTRAS": {},
-                    "PARA FUTURAS CAPITALIZACIONES": {},
-                    "PARA FUTUROS ENSANCHES": {},
-                    "PARA REPOSICION DE ACTIVOS": {}
-                },
-                "RESERVAS OBLIGATORIAS": {
-                    "ACCIONES PROPIAS READQUIRIDAS (DB)": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL PROPIAS READQUIRIDAS (DB)": {},
-                    "OTRAS": {},
-                    "RESERVA LEGAL": {},
-                    "RESERVA LEY 4\u00aa DE 1980": {},
-                    "RESERVA LEY 7\u00aa DE 1990": {},
-                    "RESERVA PARA EXTENSION AGROPECUARIA": {},
-                    "RESERVA PARA READQUISICION DE ACCIONES": {},
-                    "RESERVA PARA READQUISICION DE CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "RESERVA PARA REPOSICION DE SEMOVIENTES": {},
-                    "RESERVAS POR DISPOSICIONES FISCALES": {}
-                },
-                "RESERVAS OCASIONALES": {
-                    "A DISPOSICION DEL MAXIMO ORGANO SOCIAL": {},
-                    "OTRAS": {},
-                    "PARA ADQUISICION O REPOSICION DE PROPIEDADES, PLANTA Y EQUIPO": {},
-                    "PARA BENEFICENCIA Y CIVISMO": {},
-                    "PARA CAPITAL DE TRABAJO": {},
-                    "PARA ESTABILIZACION DE RENDIMIENTOS": {},
-                    "PARA FOMENTO ECONOMICO": {},
-                    "PARA FUTURAS CAPITALIZACIONES": {},
-                    "PARA FUTUROS ENSANCHES": {},
-                    "PARA INVESTIGACIONES Y DESARROLLO": {}
-                }
-            },
-            "RESULTADOS DE EJERCICIOS ANTERIORES": {
-                "PERDIDAS ACUMULADAS": {},
-                "UTILIDADES ACUMULADAS": {}
-            },
-            "RESULTADOS DEL EJERCICIO": {
-                "PERDIDA DEL EJERCICIO": {},
-                "UTILIDAD DEL EJERCICIO": {
-                    "UTILIDAD DEL EJERCICIO": {
-                        "UTILIDAD DEL EJERCICIO": {}
-                    }
-                }
-            },
-            "REVALORIZACION DEL PATRIMONIO": {
-                "AJUSTES POR INFLACION": {
-                    "DE ACTIVOS EN PERIODO IMPRODUCTIVO": {},
-                    "DE AJUSTES DECRETO 3019 DE 1989": {},
-                    "DE CAPITAL SOCIAL": {},
-                    "DE DIVIDENDOS Y PARTICIPACIONES DECRETADAS EN ACCIONES, CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "DE RESERVAS": {},
-                    "DE RESULTADOS DE EJERCICIOS ANTERIORES": {},
-                    "DE SANEAMIENTO FISCAL": {},
-                    "DE SUPERAVIT DE CAPITAL": {},
-                    "SUPERAVIT METODO DE PARTICIPACION": {}
-                },
-                "AJUSTES POR INFLACION DECRETO 3019 DE 1989": {},
-                "SANEAMIENTO FISCAL": {}
-            },
-            "SUPERAVIT DE CAPITAL": {
-                "CREDITO MERCANTIL": {},
-                "DONACIONES": {
-                    "EN BIENES INMUEBLES": {},
-                    "EN BIENES MUEBLES": {},
-                    "EN DINERO": {},
-                    "EN INTANGIBLES": {},
-                    "EN VALORES MOBILIARIOS": {}
-                },
-                "KNOW HOW": {},
-                "PRIMA EN COLOCACION DE ACCIONES, CUOTAS O PARTES DE INTERES SOCIAL": {
-                    "PRIMA EN COLOCACION DE ACCIONES": {},
-                    "PRIMA EN COLOCACION DE ACCIONES POR COBRAR (DB)": {},
-                    "PRIMA EN COLOCACION DE CUOTAS O PARTES DE INTERES SOCIAL": {}
-                },
-                "SUPERAVIT METODO DE PARTICIPACION": {
-                    "DE ACCIONES": {},
-                    "DE CUOTAS O PARTES DE INTERES SOCIAL": {}
-                }
-            },
-            "SUPERAVIT POR VALORIZACIONES": {
-                "DE INVERSIONES": {
-                    "ACCIONES": {},
-                    "CUOTAS O PARTES DE INTERES SOCIAL": {},
-                    "DERECHOS FIDUCIARIOS": {}
-                },
-                "DE OTROS ACTIVOS": {
-                    "BIENES DE ARTE Y CULTURA": {},
-                    "BIENES ENTREGADOS EN COMODATO": {},
-                    "BIENES RECIBIDOS EN PAGO": {},
-                    "INVENTARIO DE SEMOVIENTES": {}
-                },
-                "DE PROPIEDADES, PLANTA Y EQUIPO": {
-                    "ACUEDUCTOS, PLANTAS Y REDES": {},
-                    "ARMAMENTO DE VIGILANCIA": {},
-                    "CONSTRUCCIONES Y EDIFICACIONES": {},
-                    "ENVASES Y EMPAQUES": {},
-                    "EQUIPO DE COMPUTACION Y COMUNICACION": {},
-                    "EQUIPO DE HOTELES Y RESTAURANTES": {},
-                    "EQUIPO DE OFICINA": {},
-                    "EQUIPO MEDICO-CIENTIFICO": {},
-                    "FLOTA Y EQUIPO AEREO": {},
-                    "FLOTA Y EQUIPO DE TRANSPORTE": {},
-                    "FLOTA Y EQUIPO FERREO": {},
-                    "FLOTA Y EQUIPO FLUVIAL Y/O MARITIMO": {},
-                    "MAQUINARIA Y EQUIPO": {},
-                    "MATERIALES PROYECTOS PETROLEROS": {},
-                    "MINAS Y CANTERAS": {},
-                    "PLANTACIONES AGRICOLAS Y FORESTALES": {},
-                    "POZOS ARTESIANOS": {},
-                    "SEMOVIENTES": {},
-                    "TERRENOS": {},
-                    "VIAS DE COMUNICACION": {},
-                    "YACIMIENTOS": {}
-                }
-            },
-            "root_type": "Asset"
-        }
-    }
-}
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas.json
new file mode 100644
index 0000000..622f4b6
--- /dev/null
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas.json
@@ -0,0 +1,9400 @@
+{
+  "country_code": "co",
+  "name": "Colombia PUC",
+  "tree": {
+    "Activo": {
+      "account_number": "1",
+      "root_type": "Asset",
+      "Disponible": {
+        "account_number": "11",
+        "Caja": {
+          "account_number": "1105",
+          "account_type": "Cash",
+          "Caja general": {
+            "account_number": "110505",
+            "account_type": "Cash"
+          },
+          "Cajas menores": {
+            "account_number": "110510",
+            "account_type": "Cash"
+          },
+          "Moneda extranjera": {
+            "account_number": "110515",
+            "account_type": "Cash"
+          }
+        },
+        "Bancos": {
+          "account_number": "1110",
+          "account_type": "Bank",
+          "Moneda nacional": {
+            "account_number": "111005",
+            "account_type": "Bank"
+          },
+          "Moneda extranjera": {
+            "account_number": "111010",
+            "account_type": "Bank"
+          }
+        },
+        "Remesas en tr\u00e1nsito": {
+          "account_number": "1115",
+          "Moneda nacional": {
+            "account_number": "111505"
+          },
+          "Moneda extranjera": {
+            "account_number": "111510"
+          }
+        },
+        "Cuentas de ahorro": {
+          "account_number": "1120",
+          "Bancos": {
+            "account_number": "112005"
+          },
+          "Corporaciones de ahorro y vivienda": {
+            "account_number": "112010"
+          },
+          "Organismos cooperativos financieros": {
+            "account_number": "112015"
+          }
+        },
+        "Fondos": {
+          "account_number": "1125",
+          "Rotatorios moneda nacional": {
+            "account_number": "112505"
+          },
+          "Rotatorios moneda extranjera": {
+            "account_number": "112510"
+          },
+          "Especiales moneda nacional": {
+            "account_number": "112515"
+          },
+          "Especiales moneda extranjera": {
+            "account_number": "112520"
+          },
+          "De amortizaci\u00f3n moneda nacional": {
+            "account_number": "112525"
+          },
+          "De amortizaci\u00f3n moneda extranjera": {
+            "account_number": "112530"
+          }
+        }
+      },
+      "Inversiones": {
+        "account_number": "12",
+        "Acciones": {
+          "account_number": "1205",
+          "Agricultura, ganader\u00eda, caza y silvicultura": {
+            "account_number": "120505"
+          },
+          "Pesca": {
+            "account_number": "120510"
+          },
+          "Explotaci\u00f3n de minas y canteras": {
+            "account_number": "120515"
+          },
+          "Industria manufacturera": {
+            "account_number": "120520"
+          },
+          "Suministro de electricidad, gas y agua": {
+            "account_number": "120525"
+          },
+          "Construcci\u00f3n": {
+            "account_number": "120530"
+          },
+          "Comercio al por mayor y al por menor": {
+            "account_number": "120535"
+          },
+          "Hoteles y restaurantes": {
+            "account_number": "120540"
+          },
+          "Transporte, almacenamiento y comunicaciones": {
+            "account_number": "120545"
+          },
+          "Actividad financiera": {
+            "account_number": "120550"
+          },
+          "Actividades inmobiliarias, empresariales y de alquiler": {
+            "account_number": "120555"
+          },
+          "Ense\u00f1anza": {
+            "account_number": "120560"
+          },
+          "Servicios sociales y de salud": {
+            "account_number": "120565"
+          },
+          "Otras actividades de servicios comunitarios, sociales y personales": {
+            "account_number": "120570"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "120599"
+          }
+        },
+        "Cuotas o partes de inter\u00e9s social": {
+          "account_number": "1210",
+          "Agricultura, ganader\u00eda, caza y silvicultura": {
+            "account_number": "121005"
+          },
+          "Pesca": {
+            "account_number": "121010"
+          },
+          "Explotaci\u00f3n de minas y canteras": {
+            "account_number": "121015"
+          },
+          "Industria manufacturera": {
+            "account_number": "121020"
+          },
+          "Suministro de electricidad, gas y agua": {
+            "account_number": "121025"
+          },
+          "Construcci\u00f3n": {
+            "account_number": "121030"
+          },
+          "Comercio al por mayor y al por menor": {
+            "account_number": "121035"
+          },
+          "Hoteles y restaurantes": {
+            "account_number": "121040"
+          },
+          "Transporte, almacenamiento y comunicaciones": {
+            "account_number": "121045"
+          },
+          "Actividad financiera": {
+            "account_number": "121050"
+          },
+          "Actividades inmobiliarias, empresariales y de alquiler": {
+            "account_number": "121055"
+          },
+          "Ense\u00f1anza": {
+            "account_number": "121060"
+          },
+          "Servicios sociales y de salud": {
+            "account_number": "121065"
+          },
+          "Otras actividades de servicios comunitarios, sociales y personales": {
+            "account_number": "121070"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "121099"
+          }
+        },
+        "Bonos": {
+          "account_number": "1215",
+          "Bonos p\u00fablicos moneda nacional": {
+            "account_number": "121505"
+          },
+          "Bonos p\u00fablicos moneda extranjera": {
+            "account_number": "121510"
+          },
+          "Bonos ordinarios": {
+            "account_number": "121515"
+          },
+          "Bonos convertibles en acciones": {
+            "account_number": "121520"
+          },
+          "Otros": {
+            "account_number": "121595"
+          }
+        },
+        "C\u00e9dulas": {
+          "account_number": "1220",
+          "C\u00e9dulas de capitalizaci\u00f3n": {
+            "account_number": "122005"
+          },
+          "C\u00e9dulas hipotecarias": {
+            "account_number": "122010"
+          },
+          "C\u00e9dulas de inversi\u00f3n": {
+            "account_number": "122015"
+          },
+          "Otras": {
+            "account_number": "122095"
+          }
+        },
+        "Certificados": {
+          "account_number": "1225",
+          "Certificados de dep\u00f3sito a t\u00e9rmino (CDT)": {
+            "account_number": "122505"
+          },
+          "Certificados de dep\u00f3sito de ahorro": {
+            "account_number": "122510"
+          },
+          "Certificados de ahorro de valor constante (CAVC)": {
+            "account_number": "122515"
+          },
+          "Certificados de cambio": {
+            "account_number": "122520"
+          },
+          "Certificados cafeteros valorizables": {
+            "account_number": "122525"
+          },
+          "Certificados el\u00e9ctricos valorizables (CEV)": {
+            "account_number": "122530"
+          },
+          "Certificados de reembolso tributario (CERT)": {
+            "account_number": "122535"
+          },
+          "Certificados de desarrollo tur\u00edstico": {
+            "account_number": "122540"
+          },
+          "Certificados de inversi\u00f3n forestal (CIF)": {
+            "account_number": "122545"
+          },
+          "Otros": {
+            "account_number": "122595"
+          }
+        },
+        "Papeles comerciales": {
+          "account_number": "1230",
+          "Empresas comerciales": {
+            "account_number": "123005"
+          },
+          "Empresas industriales": {
+            "account_number": "123010"
+          },
+          "Empresas de servicios": {
+            "account_number": "123015"
+          }
+        },
+        "T\u00edtulos": {
+          "account_number": "1235",
+          "T\u00edtulos de desarrollo agropecuario": {
+            "account_number": "123505"
+          },
+          "T\u00edtulos canjeables por certificados de cambio": {
+            "account_number": "123510"
+          },
+          "T\u00edtulos de tesorer\u00eda (TES)": {
+            "account_number": "123515"
+          },
+          "T\u00edtulos de participaci\u00f3n": {
+            "account_number": "123520"
+          },
+          "T\u00edtulos de cr\u00e9dito de fomento": {
+            "account_number": "123525"
+          },
+          "T\u00edtulos financieros agroindustriales (TFA)": {
+            "account_number": "123530"
+          },
+          "T\u00edtulos de ahorro cafetero (TAC)": {
+            "account_number": "123535"
+          },
+          "T\u00edtulos de ahorro nacional (TAN)": {
+            "account_number": "123540"
+          },
+          "T\u00edtulos energ\u00e9ticos de rentabilidad creciente (TER)": {
+            "account_number": "123545"
+          },
+          "T\u00edtulos de ahorro educativo (TAE)": {
+            "account_number": "123550"
+          },
+          "T\u00edtulos financieros industriales y comerciales": {
+            "account_number": "123555"
+          },
+          "Tesoros": {
+            "account_number": "123560"
+          },
+          "T\u00edtulos de devoluci\u00f3n de impuestos nacionales (TIDIS)": {
+            "account_number": "123565"
+          },
+          "T\u00edtulos inmobiliarios": {
+            "account_number": "123570"
+          },
+          "Otros": {
+            "account_number": "123595"
+          }
+        },
+        "Aceptaciones bancarias o financieras": {
+          "account_number": "1240",
+          "Bancos comerciales": {
+            "account_number": "124005"
+          },
+          "Compa\u00f1\u00edas de financiamiento comercial": {
+            "account_number": "124010"
+          },
+          "Corporaciones financieras": {
+            "account_number": "124015"
+          },
+          "Otras": {
+            "account_number": "124095"
+          }
+        },
+        "Derechos fiduciarios": {
+          "account_number": "1245",
+          "Fideicomisos de inversi\u00f3n moneda nacional": {
+            "account_number": "124505"
+          },
+          "Fideicomisos de inversi\u00f3n moneda extranjera": {
+            "account_number": "124510"
+          }
+        },
+        "Derechos de recompra de inversiones negociadas (repos)": {
+          "account_number": "1250",
+          "Acciones": {
+            "account_number": "125005"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "125010"
+          },
+          "Bonos": {
+            "account_number": "125015"
+          },
+          "C\u00e9dulas": {
+            "account_number": "125020"
+          },
+          "Certificados": {
+            "account_number": "125025"
+          },
+          "Papeles comerciales": {
+            "account_number": "125030"
+          },
+          "T\u00edtulos": {
+            "account_number": "125035"
+          },
+          "Aceptaciones bancarias o financieras": {
+            "account_number": "125040"
+          },
+          "Otros": {
+            "account_number": "125095"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "125099"
+          }
+        },
+        "Obligatorias": {
+          "account_number": "1255",
+          "Bonos de financiamiento especial": {
+            "account_number": "125505"
+          },
+          "Bonos de financiamiento presupuestal": {
+            "account_number": "125510"
+          },
+          "Bonos para desarrollo social y seguridad interna (BDSI)": {
+            "account_number": "125515"
+          },
+          "Otras": {
+            "account_number": "125595"
+          }
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "1260",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "126099"
+          }
+        },
+        "Otras inversiones": {
+          "account_number": "1295",
+          "Aportes en cooperativas": {
+            "account_number": "129505"
+          },
+          "Derechos en clubes sociales": {
+            "account_number": "129510"
+          },
+          "Acciones o derechos en clubes deportivos": {
+            "account_number": "129515"
+          },
+          "Bonos en colegios": {
+            "account_number": "129520"
+          },
+          "Diversas": {
+            "account_number": "129595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "129599"
+          }
+        },
+        "Provisiones": {
+          "account_number": "1299",
+          "Acciones": {
+            "account_number": "129905"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "129910"
+          },
+          "Bonos": {
+            "account_number": "129915"
+          },
+          "C\u00e9dulas": {
+            "account_number": "129920"
+          },
+          "Certificados": {
+            "account_number": "129925"
+          },
+          "Papeles comerciales": {
+            "account_number": "129930"
+          },
+          "T\u00edtulos": {
+            "account_number": "129935"
+          },
+          "Aceptaciones bancarias o financieras": {
+            "account_number": "129940"
+          },
+          "Derechos fiduciarios": {
+            "account_number": "129945"
+          },
+          "Derechos de recompra de inversiones negociadas": {
+            "account_number": "129950"
+          },
+          "Obligatorias": {
+            "account_number": "129955"
+          },
+          "Cuentas en participaci\u00f3n": {
+            "account_number": "129960"
+          },
+          "Otras inversiones": {
+            "account_number": "129995"
+          }
+        }
+      },
+      "Deudores": {
+        "account_number": "13",
+        "account_type": "Receivable",
+        "Clientes": {
+          "account_number": "1305",
+          "account_type": "Receivable",
+          "Nacionales": {
+            "account_number": "130505",
+            "account_type": "Receivable"
+          },
+          "Del exterior": {
+            "account_number": "130510",
+            "account_type": "Receivable"
+          },
+          "Deudores del sistema": {
+            "account_number": "130515",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas corrientes comerciales": {
+          "account_number": "1310",
+          "account_type": "Receivable",
+          "Casa matriz": {
+            "account_number": "131005",
+            "account_type": "Receivable"
+          },
+          "Compa\u00f1\u00edas vinculadas": {
+            "account_number": "131010",
+            "account_type": "Receivable"
+          },
+          "Accionistas o socios": {
+            "account_number": "131015",
+            "account_type": "Receivable"
+          },
+          "Particulares": {
+            "account_number": "131020",
+            "account_type": "Receivable"
+          },
+          "Otras": {
+            "account_number": "131095",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas por cobrar a casa matriz": {
+          "account_number": "1315",
+          "account_type": "Receivable",
+          "Ventas": {
+            "account_number": "131505",
+            "account_type": "Receivable"
+          },
+          "Pagos a nombre de casa matriz": {
+            "account_number": "131510",
+            "account_type": "Receivable"
+          },
+          "Valores recibidos por casa matriz": {
+            "account_number": "131515",
+            "account_type": "Receivable"
+          },
+          "Pr\u00e9stamos": {
+            "account_number": "131520",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas por cobrar a vinculados econ\u00f3micos": {
+          "account_number": "1320",
+          "account_type": "Receivable",
+          "Filiales": {
+            "account_number": "132005",
+            "account_type": "Receivable"
+          },
+          "Subsidiarias": {
+            "account_number": "132010",
+            "account_type": "Receivable"
+          },
+          "Sucursales": {
+            "account_number": "132015",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas por cobrar a directores": {
+          "account_number": "1323",
+          "account_type": "Receivable"
+        },
+        "Cuentas por cobrar a socios y accionistas": {
+          "account_number": "1325",
+          "account_type": "Receivable",
+          "A socios": {
+            "account_number": "132505",
+            "account_type": "Receivable"
+          },
+          "A accionistas": {
+            "account_number": "132510",
+            "account_type": "Receivable"
+          }
+        },
+        "Aportes por cobrar": {
+          "account_number": "1328",
+          "account_type": "Receivable"
+        },
+        "Anticipos y avances": {
+          "account_number": "1330",
+          "account_type": "Receivable",
+          "A proveedores": {
+            "account_number": "133005",
+            "account_type": "Receivable"
+          },
+          "A contratistas": {
+            "account_number": "133010",
+            "account_type": "Receivable"
+          },
+          "A trabajadores": {
+            "account_number": "133015",
+            "account_type": "Receivable"
+          },
+          "A agentes": {
+            "account_number": "133020",
+            "account_type": "Receivable"
+          },
+          "A concesionarios": {
+            "account_number": "133025",
+            "account_type": "Receivable"
+          },
+          "De adjudicaciones": {
+            "account_number": "133030",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "133095",
+            "account_type": "Receivable"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "133099",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas de operaci\u00f3n conjunta": {
+          "account_number": "1332",
+          "account_type": "Receivable"
+        },
+        "Dep\u00f3sitos": {
+          "account_number": "1335",
+          "account_type": "Receivable",
+          "Para importaciones": {
+            "account_number": "133505",
+            "account_type": "Receivable"
+          },
+          "Para servicios": {
+            "account_number": "133510",
+            "account_type": "Receivable"
+          },
+          "Para contratos": {
+            "account_number": "133515",
+            "account_type": "Receivable"
+          },
+          "Para responsabilidades": {
+            "account_number": "133520",
+            "account_type": "Receivable"
+          },
+          "Para juicios ejecutivos": {
+            "account_number": "133525",
+            "account_type": "Receivable"
+          },
+          "Para adquisici\u00f3n de acciones, cuotas o derechos sociales": {
+            "account_number": "133530",
+            "account_type": "Receivable"
+          },
+          "En garant\u00eda": {
+            "account_number": "133535",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "133595",
+            "account_type": "Receivable"
+          }
+        },
+        "Promesas de compra venta": {
+          "account_number": "1340",
+          "account_type": "Receivable",
+          "De bienes ra\u00edces": {
+            "account_number": "134005",
+            "account_type": "Receivable"
+          },
+          "De maquinaria y equipo": {
+            "account_number": "134010",
+            "account_type": "Receivable"
+          },
+          "De flota y equipo de transporte": {
+            "account_number": "134015",
+            "account_type": "Receivable"
+          },
+          "De flota y equipo a\u00e9reo": {
+            "account_number": "134020",
+            "account_type": "Receivable"
+          },
+          "De flota y equipo f\u00e9rreo": {
+            "account_number": "134025",
+            "account_type": "Receivable"
+          },
+          "De flota y equipo  fluvial y/o mar\u00edtimo": {
+            "account_number": "134030",
+            "account_type": "Receivable"
+          },
+          "De semovientes": {
+            "account_number": "134035",
+            "account_type": "Receivable"
+          },
+          "De otros bienes": {
+            "account_number": "134095",
+            "account_type": "Receivable"
+          }
+        },
+        "Ingresos por cobrar": {
+          "account_number": "1345",
+          "account_type": "Receivable",
+          "Dividendos y/o participaciones": {
+            "account_number": "134505",
+            "account_type": "Receivable"
+          },
+          "Intereses": {
+            "account_number": "134510",
+            "account_type": "Receivable"
+          },
+          "Comisiones": {
+            "account_number": "134515",
+            "account_type": "Receivable"
+          },
+          "Honorarios": {
+            "account_number": "134520",
+            "account_type": "Receivable"
+          },
+          "Servicios": {
+            "account_number": "134525",
+            "account_type": "Receivable"
+          },
+          "Arrendamientos": {
+            "account_number": "134530",
+            "account_type": "Receivable"
+          },
+          "CERT por cobrar": {
+            "account_number": "134535",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "134595",
+            "account_type": "Receivable"
+          }
+        },
+        "Retenci\u00f3n sobre contratos": {
+          "account_number": "1350",
+          "account_type": "Receivable",
+          "De construcci\u00f3n": {
+            "account_number": "135005",
+            "account_type": "Receivable"
+          },
+          "De prestaci\u00f3n de servicios": {
+            "account_number": "135010",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "135095",
+            "account_type": "Receivable"
+          }
+        },
+        "Anticipo de impuestos y contribuciones o saldos a favor": {
+          "account_number": "1355",
+          "account_type": "Receivable",
+          "Anticipo de impuestos de renta y complementarios": {
+            "account_number": "135505",
+            "account_type": "Receivable"
+          },
+          "Anticipo de impuestos de industria y comercio": {
+            "account_number": "135510",
+            "account_type": "Receivable"
+          },
+          "Retenci\u00f3n en la fuente": {
+            "account_number": "135515",
+            "account_type": "Receivable"
+          },
+          "Impuesto a las ventas retenido": {
+            "account_number": "135517",
+            "account_type": "Receivable"
+          },
+          "Impuesto de industria y comercio retenido": {
+            "account_number": "135518",
+            "account_type": "Receivable"
+          },
+          "Sobrantes en liquidaci\u00f3n privada de impuestos": {
+            "account_number": "135520",
+            "account_type": "Receivable"
+          },
+          "Contribuciones": {
+            "account_number": "135525",
+            "account_type": "Receivable"
+          },
+          "Impuestos descontables": {
+            "account_number": "135530",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "135595",
+            "account_type": "Receivable"
+          }
+        },
+        "Reclamaciones": {
+          "account_number": "1360",
+          "account_type": "Receivable",
+          "A compa\u00f1\u00edas aseguradoras": {
+            "account_number": "136005",
+            "account_type": "Receivable"
+          },
+          "A transportadores": {
+            "account_number": "136010",
+            "account_type": "Receivable"
+          },
+          "Por tiquetes a\u00e9reos": {
+            "account_number": "136015",
+            "account_type": "Receivable"
+          },
+          "Otras": {
+            "account_number": "136095",
+            "account_type": "Receivable"
+          }
+        },
+        "Cuentas por cobrar a trabajadores": {
+          "account_number": "1365",
+          "account_type": "Receivable",
+          "Vivienda": {
+            "account_number": "136505",
+            "account_type": "Receivable"
+          },
+          "Veh\u00edculos": {
+            "account_number": "136510",
+            "account_type": "Receivable"
+          },
+          "Educaci\u00f3n": {
+            "account_number": "136515",
+            "account_type": "Receivable"
+          },
+          "M\u00e9dicos, odontol\u00f3gicos y similares": {
+            "account_number": "136520",
+            "account_type": "Receivable"
+          },
+          "Calamidad dom\u00e9stica": {
+            "account_number": "136525",
+            "account_type": "Receivable"
+          },
+          "Responsabilidades": {
+            "account_number": "136530",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "136595",
+            "account_type": "Receivable"
+          }
+        },
+        "Pr\u00e9stamos a particulares": {
+          "account_number": "1370",
+          "account_type": "Receivable",
+          "Con garant\u00eda real": {
+            "account_number": "137005",
+            "account_type": "Receivable"
+          },
+          "Con garant\u00eda personal": {
+            "account_number": "137010",
+            "account_type": "Receivable"
+          }
+        },
+        "Deudores varios": {
+          "account_number": "1380",
+          "account_type": "Receivable",
+          "Depositarios": {
+            "account_number": "138005",
+            "account_type": "Receivable"
+          },
+          "Comisionistas de bolsas": {
+            "account_number": "138010",
+            "account_type": "Receivable"
+          },
+          "Fondo de inversi\u00f3n": {
+            "account_number": "138015",
+            "account_type": "Receivable"
+          },
+          "Cuentas por cobrar de terceros": {
+            "account_number": "138020",
+            "account_type": "Receivable"
+          },
+          "Pagos por cuenta de terceros": {
+            "account_number": "138025",
+            "account_type": "Receivable"
+          },
+          "Fondos de inversi\u00f3n social": {
+            "account_number": "138030",
+            "account_type": "Receivable"
+          },
+          "Otros": {
+            "account_number": "138095",
+            "account_type": "Receivable"
+          }
+        },
+        "Derechos de recompra de cartera negociada": {
+          "account_number": "1385",
+          "account_type": "Receivable"
+        },
+        "Deudas de dif\u00edcil cobro": {
+          "account_number": "1390",
+          "account_type": "Receivable"
+        },
+        "Provisiones": {
+          "account_number": "1399",
+          "account_type": "Receivable",
+          "Clientes": {
+            "account_number": "139905",
+            "account_type": "Receivable"
+          },
+          "Cuentas corrientes comerciales": {
+            "account_number": "139910",
+            "account_type": "Receivable"
+          },
+          "Cuentas por cobrar a casa matriz": {
+            "account_number": "139915",
+            "account_type": "Receivable"
+          },
+          "Cuentas por cobrar a vinculados econ\u00f3micos": {
+            "account_number": "139920",
+            "account_type": "Receivable"
+          },
+          "Cuentas por cobrar a socios y accionistas": {
+            "account_number": "139925",
+            "account_type": "Receivable"
+          },
+          "Anticipos y avances": {
+            "account_number": "139930",
+            "account_type": "Receivable"
+          },
+          "Cuentas de operaci\u00f3n conjunta": {
+            "account_number": "139932",
+            "account_type": "Receivable"
+          },
+          "Dep\u00f3sitos": {
+            "account_number": "139935",
+            "account_type": "Receivable"
+          },
+          "Promesas de compraventa": {
+            "account_number": "139940",
+            "account_type": "Receivable"
+          },
+          "Ingresos por cobrar": {
+            "account_number": "139945",
+            "account_type": "Receivable"
+          },
+          "Retenci\u00f3n sobre contratos": {
+            "account_number": "139950",
+            "account_type": "Receivable"
+          },
+          "Reclamaciones": {
+            "account_number": "139955",
+            "account_type": "Receivable"
+          },
+          "Cuentas por cobrar a trabajadores": {
+            "account_number": "139960",
+            "account_type": "Receivable"
+          },
+          "Pr\u00e9stamos a particulares": {
+            "account_number": "139965",
+            "account_type": "Receivable"
+          },
+          "Deudores varios": {
+            "account_number": "139975",
+            "account_type": "Receivable"
+          },
+          "Derechos de recompra de cartera negociada": {
+            "account_number": "139980",
+            "account_type": "Receivable"
+          }
+        }
+      },
+      "Inventarios": {
+        "account_number": "14",
+        "account_type": "Stock",
+        "Materias primas": {
+          "account_number": "1405",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "140599",
+            "account_type": "Stock"
+          }
+        },
+        "Productos en proceso": {
+          "account_number": "1410",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "141099",
+            "account_type": "Stock"
+          }
+        },
+        "Obras de construcci\u00f3n en curso": {
+          "account_number": "1415",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "141599",
+            "account_type": "Stock"
+          }
+        },
+        "Obras de urbanismo": {
+          "account_number": "1417",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "141799",
+            "account_type": "Stock"
+          }
+        },
+        "Contratos en ejecuci\u00f3n": {
+          "account_number": "1420",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "142099",
+            "account_type": "Stock"
+          }
+        },
+        "Cultivos en desarrollo": {
+          "account_number": "1425",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "142599",
+            "account_type": "Stock"
+          }
+        },
+        "Plantaciones agr\u00edcolas": {
+          "account_number": "1428",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "142899",
+            "account_type": "Stock"
+          }
+        },
+        "Productos terminados": {
+          "account_number": "1430",
+          "account_type": "Stock",
+          "Productos manufacturados": {
+            "account_number": "143005",
+            "account_type": "Stock"
+          },
+          "Productos extra\u00eddos y/o procesados": {
+            "account_number": "143010",
+            "account_type": "Stock"
+          },
+          "Productos agr\u00edcolas y forestales": {
+            "account_number": "143015",
+            "account_type": "Stock"
+          },
+          "Subproductos": {
+            "account_number": "143020",
+            "account_type": "Stock"
+          },
+          "Productos de pesca": {
+            "account_number": "143025",
+            "account_type": "Stock"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "143099",
+            "account_type": "Stock"
+          }
+        },
+        "Mercanc\u00edas no fabricadas por la empresa": {
+          "account_number": "1435",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "143599",
+            "account_type": "Stock"
+          }
+        },
+        "Bienes ra\u00edces para la venta": {
+          "account_number": "1440",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "144099",
+            "account_type": "Stock"
+          }
+        },
+        "Semovientes": {
+          "account_number": "1445",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "144599",
+            "account_type": "Stock"
+          }
+        },
+        "Terrenos": {
+          "account_number": "1450",
+          "account_type": "Stock",
+          "Por urbanizar": {
+            "account_number": "145005",
+            "account_type": "Stock"
+          },
+          "Urbanizados por construir": {
+            "account_number": "145010",
+            "account_type": "Stock"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "145099",
+            "account_type": "Stock"
+          }
+        },
+        "Materiales, repuestos y accesorios": {
+          "account_number": "1455",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "145599",
+            "account_type": "Stock"
+          }
+        },
+        "Envases y empaques": {
+          "account_number": "1460",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "146099",
+            "account_type": "Stock"
+          }
+        },
+        "Inventarios en tr\u00e1nsito": {
+          "account_number": "1465",
+          "account_type": "Stock",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "146599",
+            "account_type": "Stock"
+          }
+        },
+        "Provisiones": {
+          "account_number": "1499",
+          "account_type": "Stock",
+          "Para obsolescencia": {
+            "account_number": "149905",
+            "account_type": "Stock"
+          },
+          "Para diferencia de inventario f\u00edsico": {
+            "account_number": "149910",
+            "account_type": "Stock"
+          },
+          "Para p\u00e9rdidas de inventarios": {
+            "account_number": "149915",
+            "account_type": "Stock"
+          },
+          "Lifo": {
+            "account_number": "149920",
+            "account_type": "Stock"
+          }
+        }
+      },
+      "Propiedades, planta y equipo": {
+        "account_number": "15",
+        "account_type": "Fixed Asset",
+        "Terrenos": {
+          "account_number": "1504",
+          "account_type": "Fixed Asset",
+          "Urbanos": {
+            "account_number": "150405",
+            "account_type": "Fixed Asset"
+          },
+          "Rurales": {
+            "account_number": "150410",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "150499",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Materiales proyectos petroleros": {
+          "account_number": "1506",
+          "account_type": "Fixed Asset",
+          "Tuber\u00edas y equipo": {
+            "account_number": "150605",
+            "account_type": "Fixed Asset"
+          },
+          "Costos de importaci\u00f3n materiales": {
+            "account_number": "150610",
+            "account_type": "Fixed Asset"
+          },
+          "Proyectos de construcci\u00f3n": {
+            "account_number": "150615",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "150699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Construcciones en curso": {
+          "account_number": "1508",
+          "account_type": "Fixed Asset",
+          "Construcciones y edificaciones": {
+            "account_number": "150805",
+            "account_type": "Fixed Asset"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "150810",
+            "account_type": "Fixed Asset"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "150815",
+            "account_type": "Fixed Asset"
+          },
+          "Pozos artesianos": {
+            "account_number": "150820",
+            "account_type": "Fixed Asset"
+          },
+          "Proyectos de exploraci\u00f3n": {
+            "account_number": "150825",
+            "account_type": "Fixed Asset"
+          },
+          "Proyectos de desarrollo": {
+            "account_number": "150830",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "150899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Maquinaria y equipos en montaje": {
+          "account_number": "1512",
+          "account_type": "Fixed Asset",
+          "Maquinaria y equipo": {
+            "account_number": "151205",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de oficina": {
+            "account_number": "151210",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "151215",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "151220",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "151225",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "151230",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "151235",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "151240",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "151245",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas y redes": {
+            "account_number": "151250",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "151299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Construcciones y edificaciones": {
+          "account_number": "1516",
+          "account_type": "Fixed Asset",
+          "Edificios": {
+            "account_number": "151605",
+            "account_type": "Fixed Asset"
+          },
+          "Oficinas": {
+            "account_number": "151610",
+            "account_type": "Fixed Asset"
+          },
+          "Almacenes": {
+            "account_number": "151615",
+            "account_type": "Fixed Asset"
+          },
+          "F\u00e1bricas y plantas industriales": {
+            "account_number": "151620",
+            "account_type": "Fixed Asset"
+          },
+          "Salas de exhibici\u00f3n y ventas": {
+            "account_number": "151625",
+            "account_type": "Fixed Asset"
+          },
+          "Cafeter\u00eda y casinos": {
+            "account_number": "151630",
+            "account_type": "Fixed Asset"
+          },
+          "Silos": {
+            "account_number": "151635",
+            "account_type": "Fixed Asset"
+          },
+          "Invernaderos": {
+            "account_number": "151640",
+            "account_type": "Fixed Asset"
+          },
+          "Casetas y campamentos": {
+            "account_number": "151645",
+            "account_type": "Fixed Asset"
+          },
+          "Instalaciones agropecuarias": {
+            "account_number": "151650",
+            "account_type": "Fixed Asset"
+          },
+          "Viviendas para empleados y obreros": {
+            "account_number": "151655",
+            "account_type": "Fixed Asset"
+          },
+          "Terminal de buses y taxis": {
+            "account_number": "151660",
+            "account_type": "Fixed Asset"
+          },
+          "Terminal mar\u00edtimo": {
+            "account_number": "151663",
+            "account_type": "Fixed Asset"
+          },
+          "Terminal f\u00e9rreo": {
+            "account_number": "151665",
+            "account_type": "Fixed Asset"
+          },
+          "Parqueaderos, garajes y dep\u00f3sitos": {
+            "account_number": "151670",
+            "account_type": "Fixed Asset"
+          },
+          "Hangares": {
+            "account_number": "151675",
+            "account_type": "Fixed Asset"
+          },
+          "Bodegas": {
+            "account_number": "151680",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "151695",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "151699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Maquinaria y equipo": {
+          "account_number": "1520",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "152099",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Equipo de oficina": {
+          "account_number": "1524",
+          "account_type": "Fixed Asset",
+          "Muebles y enseres": {
+            "account_number": "152405",
+            "account_type": "Fixed Asset"
+          },
+          "Equipos": {
+            "account_number": "152410",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "152495",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "152499",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+          "account_number": "1528",
+          "account_type": "Fixed Asset",
+          "Equipos de procesamiento de datos": {
+            "account_number": "152805",
+            "account_type": "Fixed Asset"
+          },
+          "Equipos de telecomunicaciones": {
+            "account_number": "152810",
+            "account_type": "Fixed Asset"
+          },
+          "Equipos de radio": {
+            "account_number": "152815",
+            "account_type": "Fixed Asset"
+          },
+          "Sat\u00e9lites y antenas": {
+            "account_number": "152820",
+            "account_type": "Fixed Asset"
+          },
+          "L\u00edneas telef\u00f3nicas": {
+            "account_number": "152825",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "152895",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "152899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Equipo m\u00e9dico-cient\u00edfico": {
+          "account_number": "1532",
+          "account_type": "Fixed Asset",
+          "M\u00e9dico": {
+            "account_number": "153205",
+            "account_type": "Fixed Asset"
+          },
+          "Odontol\u00f3gico": {
+            "account_number": "153210",
+            "account_type": "Fixed Asset"
+          },
+          "Laboratorio": {
+            "account_number": "153215",
+            "account_type": "Fixed Asset"
+          },
+          "Instrumental": {
+            "account_number": "153220",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "153295",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "153299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Equipo de hoteles y restaurantes": {
+          "account_number": "1536",
+          "account_type": "Fixed Asset",
+          "De habitaciones": {
+            "account_number": "153605",
+            "account_type": "Fixed Asset"
+          },
+          "De comestibles y bebidas": {
+            "account_number": "153610",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "153695",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "153699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Flota y equipo de transporte": {
+          "account_number": "1540",
+          "account_type": "Fixed Asset",
+          "Autos, camionetas y camperos": {
+            "account_number": "154005",
+            "account_type": "Fixed Asset"
+          },
+          "Camiones, volquetas y furgones": {
+            "account_number": "154008",
+            "account_type": "Fixed Asset"
+          },
+          "Tractomulas y remolques": {
+            "account_number": "154010",
+            "account_type": "Fixed Asset"
+          },
+          "Buses y busetas": {
+            "account_number": "154015",
+            "account_type": "Fixed Asset"
+          },
+          "Recolectores y contenedores": {
+            "account_number": "154017",
+            "account_type": "Fixed Asset"
+          },
+          "Montacargas": {
+            "account_number": "154020",
+            "account_type": "Fixed Asset"
+          },
+          "Palas y gr\u00faas": {
+            "account_number": "154025",
+            "account_type": "Fixed Asset"
+          },
+          "Motocicletas": {
+            "account_number": "154030",
+            "account_type": "Fixed Asset"
+          },
+          "Bicicletas": {
+            "account_number": "154035",
+            "account_type": "Fixed Asset"
+          },
+          "Estibas y carretas": {
+            "account_number": "154040",
+            "account_type": "Fixed Asset"
+          },
+          "Bandas transportadoras": {
+            "account_number": "154045",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "154095",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "154099",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Flota y equipo fluvial y/o mar\u00edtimo": {
+          "account_number": "1544",
+          "account_type": "Fixed Asset",
+          "Buques": {
+            "account_number": "154405",
+            "account_type": "Fixed Asset"
+          },
+          "Lanchas": {
+            "account_number": "154410",
+            "account_type": "Fixed Asset"
+          },
+          "Remolcadoras": {
+            "account_number": "154415",
+            "account_type": "Fixed Asset"
+          },
+          "Botes": {
+            "account_number": "154420",
+            "account_type": "Fixed Asset"
+          },
+          "Boyas": {
+            "account_number": "154425",
+            "account_type": "Fixed Asset"
+          },
+          "Amarres": {
+            "account_number": "154430",
+            "account_type": "Fixed Asset"
+          },
+          "Contenedores y chasises": {
+            "account_number": "154435",
+            "account_type": "Fixed Asset"
+          },
+          "Gabarras": {
+            "account_number": "154440",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "154495",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "154499",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Flota y equipo a\u00e9reo": {
+          "account_number": "1548",
+          "account_type": "Fixed Asset",
+          "Aviones": {
+            "account_number": "154805",
+            "account_type": "Fixed Asset"
+          },
+          "Avionetas": {
+            "account_number": "154810",
+            "account_type": "Fixed Asset"
+          },
+          "Helic\u00f3pteros": {
+            "account_number": "154815",
+            "account_type": "Fixed Asset"
+          },
+          "Turbinas y motores": {
+            "account_number": "154820",
+            "account_type": "Fixed Asset"
+          },
+          "Manuales de entrenamiento personal t\u00e9cnico": {
+            "account_number": "154825",
+            "account_type": "Fixed Asset"
+          },
+          "Equipos de vuelo": {
+            "account_number": "154830",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "154895",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "154899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Flota y equipo f\u00e9rreo": {
+          "account_number": "1552",
+          "account_type": "Fixed Asset",
+          "Locomotoras": {
+            "account_number": "155205",
+            "account_type": "Fixed Asset"
+          },
+          "Vagones": {
+            "account_number": "155210",
+            "account_type": "Fixed Asset"
+          },
+          "Redes f\u00e9rreas": {
+            "account_number": "155215",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "155295",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "155299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Acueductos, plantas y redes": {
+          "account_number": "1556",
+          "account_type": "Fixed Asset",
+          "Instalaciones para agua y energ\u00eda": {
+            "account_number": "155605",
+            "account_type": "Fixed Asset"
+          },
+          "Acueducto, acequias y canalizaciones": {
+            "account_number": "155610",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de generaci\u00f3n hidr\u00e1ulica": {
+            "account_number": "155615",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de generaci\u00f3n t\u00e9rmica": {
+            "account_number": "155620",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de generaci\u00f3n a gas": {
+            "account_number": "155625",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de generaci\u00f3n diesel, gasolina y petr\u00f3leo": {
+            "account_number": "155628",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de distribuci\u00f3n": {
+            "account_number": "155630",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de transmisi\u00f3n y subestaciones": {
+            "account_number": "155635",
+            "account_type": "Fixed Asset"
+          },
+          "Oleoductos": {
+            "account_number": "155640",
+            "account_type": "Fixed Asset"
+          },
+          "Gasoductos": {
+            "account_number": "155645",
+            "account_type": "Fixed Asset"
+          },
+          "Poliductos": {
+            "account_number": "155647",
+            "account_type": "Fixed Asset"
+          },
+          "Redes de distribuci\u00f3n": {
+            "account_number": "155650",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas de tratamiento": {
+            "account_number": "155655",
+            "account_type": "Fixed Asset"
+          },
+          "Redes de recolecci\u00f3n de aguas negras": {
+            "account_number": "155660",
+            "account_type": "Fixed Asset"
+          },
+          "Instalaciones y equipo de bombeo": {
+            "account_number": "155665",
+            "account_type": "Fixed Asset"
+          },
+          "Redes de distribuci\u00f3n de vapor": {
+            "account_number": "155670",
+            "account_type": "Fixed Asset"
+          },
+          "Redes de aire": {
+            "account_number": "155675",
+            "account_type": "Fixed Asset"
+          },
+          "Redes alimentaci\u00f3n de gas": {
+            "account_number": "155680",
+            "account_type": "Fixed Asset"
+          },
+          "Redes externas de telefon\u00eda": {
+            "account_number": "155682",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas deshidratadoras": {
+            "account_number": "155685",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "155695",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "155699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Armamento de vigilancia": {
+          "account_number": "1560",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "156099",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Envases y empaques": {
+          "account_number": "1562",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "156299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Plantaciones agr\u00edcolas y forestales": {
+          "account_number": "1564",
+          "account_type": "Fixed Asset",
+          "Cultivos en desarrollo": {
+            "account_number": "156405",
+            "account_type": "Fixed Asset"
+          },
+          "Cultivos amortizables": {
+            "account_number": "156410",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "156499",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "V\u00edas de comunicaci\u00f3n": {
+          "account_number": "1568",
+          "account_type": "Fixed Asset",
+          "Pavimentaci\u00f3n y patios": {
+            "account_number": "156805",
+            "account_type": "Fixed Asset"
+          },
+          "V\u00edas": {
+            "account_number": "156810",
+            "account_type": "Fixed Asset"
+          },
+          "Puentes": {
+            "account_number": "156815",
+            "account_type": "Fixed Asset"
+          },
+          "Calles": {
+            "account_number": "156820",
+            "account_type": "Fixed Asset"
+          },
+          "Aer\u00f3dromos": {
+            "account_number": "156825",
+            "account_type": "Fixed Asset"
+          },
+          "Otros": {
+            "account_number": "156895",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "156899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Minas y canteras": {
+          "account_number": "1572",
+          "account_type": "Fixed Asset",
+          "Minas": {
+            "account_number": "157205",
+            "account_type": "Fixed Asset"
+          },
+          "Canteras": {
+            "account_number": "157210",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "157299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Pozos artesianos": {
+          "account_number": "1576",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "157699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Yacimientos": {
+          "account_number": "1580",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "158099",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Semovientes": {
+          "account_number": "1584",
+          "account_type": "Fixed Asset",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "158499",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Propiedades, planta y equipo en tr\u00e1nsito": {
+          "account_number": "1588",
+          "account_type": "Fixed Asset",
+          "Maquinaria y equipo": {
+            "account_number": "158805",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de oficina": {
+            "account_number": "158810",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "158815",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "158820",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "158825",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "158830",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "158835",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "158840",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "158845",
+            "account_type": "Fixed Asset"
+          },
+          "Plantas y redes": {
+            "account_number": "158850",
+            "account_type": "Fixed Asset"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "158855",
+            "account_type": "Fixed Asset"
+          },
+          "Semovientes": {
+            "account_number": "158860",
+            "account_type": "Fixed Asset"
+          },
+          "Envases y empaques": {
+            "account_number": "158865",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "158899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Depreciaci\u00f3n acumulada": {
+          "account_number": "1592",
+          "account_type": "Fixed Asset",
+          "Construcciones y edificaciones": {
+            "account_number": "159205",
+            "account_type": "Fixed Asset"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "159210",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de oficina": {
+            "account_number": "159215",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "159220",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "159225",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "159230",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "159235",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "159240",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "159245",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "159250",
+            "account_type": "Fixed Asset"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "159255",
+            "account_type": "Fixed Asset"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "159260",
+            "account_type": "Fixed Asset"
+          },
+          "Envases y empaques": {
+            "account_number": "159265",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "159299",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Depreciaci\u00f3n diferida": {
+          "account_number": "1596",
+          "account_type": "Fixed Asset",
+          "Exceso fiscal sobre la contable": {
+            "account_number": "159605",
+            "account_type": "Fixed Asset"
+          },
+          "Defecto fiscal sobre la contable (CR)": {
+            "account_number": "159610",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "159699",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Amortizaci\u00f3n acumulada": {
+          "account_number": "1597",
+          "account_type": "Fixed Asset",
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "159705",
+            "account_type": "Fixed Asset"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "159710",
+            "account_type": "Fixed Asset"
+          },
+          "Semovientes": {
+            "account_number": "159715",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "159799",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Agotamiento acumulado": {
+          "account_number": "1598",
+          "account_type": "Fixed Asset",
+          "Minas y canteras": {
+            "account_number": "159805",
+            "account_type": "Fixed Asset"
+          },
+          "Pozos artesianos": {
+            "account_number": "159815",
+            "account_type": "Fixed Asset"
+          },
+          "Yacimientos": {
+            "account_number": "159820",
+            "account_type": "Fixed Asset"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "159899",
+            "account_type": "Fixed Asset"
+          }
+        },
+        "Provisiones": {
+          "account_number": "1599",
+          "account_type": "Fixed Asset",
+          "Terrenos": {
+            "account_number": "159904",
+            "account_type": "Fixed Asset"
+          },
+          "Materiales proyectos petroleros": {
+            "account_number": "159906",
+            "account_type": "Fixed Asset"
+          },
+          "Construcciones en curso": {
+            "account_number": "159908",
+            "account_type": "Fixed Asset"
+          },
+          "Maquinaria en montaje": {
+            "account_number": "159912",
+            "account_type": "Fixed Asset"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "159916",
+            "account_type": "Fixed Asset"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "159920",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de oficina": {
+            "account_number": "159924",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "159928",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "159932",
+            "account_type": "Fixed Asset"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "159936",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "159940",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "159944",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "159948",
+            "account_type": "Fixed Asset"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "159952",
+            "account_type": "Fixed Asset"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "159956",
+            "account_type": "Fixed Asset"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "159960",
+            "account_type": "Fixed Asset"
+          },
+          "Envases y empaques": {
+            "account_number": "159962",
+            "account_type": "Fixed Asset"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "159964",
+            "account_type": "Fixed Asset"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "159968",
+            "account_type": "Fixed Asset"
+          },
+          "Minas y canteras": {
+            "account_number": "159972",
+            "account_type": "Fixed Asset"
+          },
+          "Pozos artesianos": {
+            "account_number": "159980",
+            "account_type": "Fixed Asset"
+          },
+          "Yacimientos": {
+            "account_number": "159984",
+            "account_type": "Fixed Asset"
+          },
+          "Semovientes": {
+            "account_number": "159988",
+            "account_type": "Fixed Asset"
+          },
+          "Propiedades, planta y equipo en tr\u00e1nsito": {
+            "account_number": "159992",
+            "account_type": "Fixed Asset"
+          }
+        }
+      },
+      "Intangibles": {
+        "account_number": "16",
+        "Cr\u00e9dito mercantil": {
+          "account_number": "1605",
+          "Formado o estimado": {
+            "account_number": "160505"
+          },
+          "Adquirido o comprado": {
+            "account_number": "160510"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "160599"
+          }
+        },
+        "Marcas": {
+          "account_number": "1610",
+          "Adquiridas": {
+            "account_number": "161005"
+          },
+          "Formadas": {
+            "account_number": "161010"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "161099"
+          }
+        },
+        "Patentes": {
+          "account_number": "1615",
+          "Adquiridas": {
+            "account_number": "161505"
+          },
+          "Formadas": {
+            "account_number": "161510"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "161599"
+          }
+        },
+        "Concesiones y franquicias": {
+          "account_number": "1620",
+          "Concesiones": {
+            "account_number": "162005"
+          },
+          "Franquicias": {
+            "account_number": "162010"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "162099"
+          }
+        },
+        "Derechos": {
+          "account_number": "1625",
+          "Derechos de autor": {
+            "account_number": "162505"
+          },
+          "Puesto de bolsa": {
+            "account_number": "162510"
+          },
+          "En fideicomisos inmobiliarios": {
+            "account_number": "162515"
+          },
+          "En fideicomisos de garant\u00eda": {
+            "account_number": "162520"
+          },
+          "En fideicomisos de administraci\u00f3n": {
+            "account_number": "162525"
+          },
+          "De exhibici\u00f3n - pel\u00edculas": {
+            "account_number": "162530"
+          },
+          "En bienes recibidos en arrendamiento financiero (leasing)": {
+            "account_number": "162535"
+          },
+          "Otros": {
+            "account_number": "162595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "162599"
+          }
+        },
+        "Know how": {
+          "account_number": "1630",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "163099"
+          }
+        },
+        "Licencias": {
+          "account_number": "1635",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "163599"
+          }
+        },
+        "Depreciaci\u00f3n y/o amortizaci\u00f3n acumulada": {
+          "account_number": "1698",
+          "Cr\u00e9dito mercantil": {
+            "account_number": "169805"
+          },
+          "Marcas": {
+            "account_number": "169810"
+          },
+          "Patentes": {
+            "account_number": "169815"
+          },
+          "Concesiones y franquicias": {
+            "account_number": "169820"
+          },
+          "Derechos": {
+            "account_number": "169830"
+          },
+          "Know how": {
+            "account_number": "169835"
+          },
+          "Licencias": {
+            "account_number": "169840"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "169899"
+          }
+        },
+        "Provisiones": {
+          "account_number": "1699",
+          "account_type": "Accumulated Depreciation"
+        }
+      },
+      "Diferidos": {
+        "account_number": "17",
+        "Gastos pagados por anticipado": {
+          "account_number": "1705",
+          "Intereses": {
+            "account_number": "170505"
+          },
+          "Honorarios": {
+            "account_number": "170510"
+          },
+          "Comisiones": {
+            "account_number": "170515"
+          },
+          "Seguros y fianzas": {
+            "account_number": "170520"
+          },
+          "Arrendamientos": {
+            "account_number": "170525"
+          },
+          "Bodegajes": {
+            "account_number": "170530"
+          },
+          "Mantenimiento equipos": {
+            "account_number": "170535"
+          },
+          "Servicios": {
+            "account_number": "170540"
+          },
+          "Suscripciones": {
+            "account_number": "170545"
+          },
+          "Otros": {
+            "account_number": "170595"
+          }
+        },
+        "Cargos diferidos": {
+          "account_number": "1710",
+          "Organizaci\u00f3n y preoperativos": {
+            "account_number": "171004"
+          },
+          "Remodelaciones": {
+            "account_number": "171008"
+          },
+          "Estudios, investigaciones y proyectos": {
+            "account_number": "171012"
+          },
+          "Programas para computador (software)": {
+            "account_number": "171016"
+          },
+          "\u00datiles y papeler\u00eda": {
+            "account_number": "171020"
+          },
+          "Mejoras a propiedades ajenas": {
+            "account_number": "171024"
+          },
+          "Contribuciones y afiliaciones": {
+            "account_number": "171028"
+          },
+          "Entrenamiento de personal": {
+            "account_number": "171032"
+          },
+          "Ferias y exposiciones": {
+            "account_number": "171036"
+          },
+          "Licencias": {
+            "account_number": "171040"
+          },
+          "Publicidad, propaganda y promoci\u00f3n": {
+            "account_number": "171044"
+          },
+          "Elementos de aseo y cafeter\u00eda": {
+            "account_number": "171048"
+          },
+          "Moldes y troqueles": {
+            "account_number": "171052"
+          },
+          "Instrumental quir\u00fargico": {
+            "account_number": "171056"
+          },
+          "Dotaci\u00f3n y suministro a trabajadores": {
+            "account_number": "171060"
+          },
+          "Elementos de roper\u00eda y lencer\u00eda": {
+            "account_number": "171064"
+          },
+          "Loza y cristaler\u00eda": {
+            "account_number": "171068"
+          },
+          "Plater\u00eda": {
+            "account_number": "171069"
+          },
+          "Cubierter\u00eda": {
+            "account_number": "171070"
+          },
+          "Impuesto de renta diferido ?d\u00e9bitos? por diferencias temporales": {
+            "account_number": "171076"
+          },
+          "Concursos y licitaciones": {
+            "account_number": "171080"
+          },
+          "Otros": {
+            "account_number": "171095"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "171099"
+          }
+        },
+        "Costos de exploraci\u00f3n por amortizar": {
+          "account_number": "1715",
+          "Pozos secos": {
+            "account_number": "171505"
+          },
+          "Pozos no comerciales": {
+            "account_number": "171510"
+          },
+          "Otros costos de exploraci\u00f3n": {
+            "account_number": "171515"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "171599"
+          }
+        },
+        "Costos de explotaci\u00f3n y desarrollo": {
+          "account_number": "1720",
+          "Perforaci\u00f3n y explotaci\u00f3n": {
+            "account_number": "172005"
+          },
+          "Perforaciones campos en desarrollo": {
+            "account_number": "172010"
+          },
+          "Facilidades de producci\u00f3n": {
+            "account_number": "172015"
+          },
+          "Servicio a pozos": {
+            "account_number": "172020"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "172099"
+          }
+        },
+        "Cargos por correcci\u00f3n monetaria diferida": {
+          "account_number": "1730"
+        },
+        "Amortizaci\u00f3n acumulada": {
+          "account_number": "1798",
+          "account_type": "Accumulated Depreciation",
+          "Costos de exploraci\u00f3n por amortizar": {
+            "account_number": "179805",
+            "account_type": "Accumulated Depreciation"
+          },
+          "Costos de explotaci\u00f3n y desarrollo": {
+            "account_number": "179810",
+            "account_type": "Accumulated Depreciation"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "179899",
+            "account_type": "Accumulated Depreciation"
+          }
+        }
+      },
+      "Otros activos": {
+        "account_number": "18",
+        "Bienes de arte y cultura": {
+          "account_number": "1805",
+          "Obras de arte": {
+            "account_number": "180505"
+          },
+          "Bibliotecas": {
+            "account_number": "180510"
+          },
+          "Otros": {
+            "account_number": "180595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "180599"
+          }
+        },
+        "Diversos": {
+          "account_number": "1895",
+          "M\u00e1quinas porteadoras": {
+            "account_number": "189505"
+          },
+          "Bienes entregados en comodato": {
+            "account_number": "189510"
+          },
+          "Amortizaci\u00f3n acumulada de bienes entregados en comodato (CR)": {
+            "account_number": "189515"
+          },
+          "Bienes recibidos en pago": {
+            "account_number": "189520"
+          },
+          "Derechos sucesorales": {
+            "account_number": "189525"
+          },
+          "Estampillas": {
+            "account_number": "189530"
+          },
+          "Otros": {
+            "account_number": "189595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "189599"
+          }
+        },
+        "Provisiones": {
+          "account_number": "1899",
+          "Bienes de arte y cultura": {
+            "account_number": "189905"
+          },
+          "Diversos": {
+            "account_number": "189995"
+          }
+        }
+      },
+      "Valorizaciones": {
+        "account_number": "19",
+        "De inversiones": {
+          "account_number": "1905",
+          "Acciones": {
+            "account_number": "190505"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "190510"
+          },
+          "Derechos fiduciarios": {
+            "account_number": "190515"
+          }
+        },
+        "De propiedades, planta y equipo": {
+          "account_number": "1910",
+          "Terrenos": {
+            "account_number": "191004"
+          },
+          "Materiales proyectos petroleros": {
+            "account_number": "191006"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "191008"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "191012"
+          },
+          "Equipo de oficina": {
+            "account_number": "191016"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "191020"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "191024"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "191028"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "191032"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "191036"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "191040"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "191044"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "191048"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "191052"
+          },
+          "Envases y empaques": {
+            "account_number": "191056"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "191060"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "191064"
+          },
+          "Minas y canteras": {
+            "account_number": "191068"
+          },
+          "Pozos artesianos": {
+            "account_number": "191072"
+          },
+          "Yacimientos": {
+            "account_number": "191076"
+          },
+          "Semovientes": {
+            "account_number": "191080"
+          }
+        },
+        "De otros activos": {
+          "account_number": "1995",
+          "Bienes de arte y cultura": {
+            "account_number": "199505"
+          },
+          "Bienes entregados en comodato": {
+            "account_number": "199510"
+          },
+          "Bienes recibidos en pago": {
+            "account_number": "199515"
+          },
+          "Inventario de semovientes": {
+            "account_number": "199520"
+          }
+        }
+      }
+    },
+    "Pasivo": {
+      "account_number": "2",
+      "root_type": "Liability",
+      "Obligaciones financieras": {
+        "account_number": "21",
+        "Bancos nacionales": {
+          "account_number": "2105",
+          "Sobregiros": {
+            "account_number": "210505"
+          },
+          "Pagar\u00e9s": {
+            "account_number": "210510"
+          },
+          "Cartas de cr\u00e9dito": {
+            "account_number": "210515"
+          },
+          "Aceptaciones bancarias": {
+            "account_number": "210520"
+          }
+        },
+        "Bancos del exterior": {
+          "account_number": "2110",
+          "Sobregiros": {
+            "account_number": "211005"
+          },
+          "Pagar\u00e9s": {
+            "account_number": "211010"
+          },
+          "Cartas de cr\u00e9dito": {
+            "account_number": "211015"
+          },
+          "Aceptaciones bancarias": {
+            "account_number": "211020"
+          }
+        },
+        "Corporaciones financieras": {
+          "account_number": "2115",
+          "Pagar\u00e9s": {
+            "account_number": "211505"
+          },
+          "Aceptaciones financieras": {
+            "account_number": "211510"
+          },
+          "Cartas de cr\u00e9dito": {
+            "account_number": "211515"
+          },
+          "Contratos de arrendamiento financiero (leasing)": {
+            "account_number": "211520"
+          }
+        },
+        "Compa\u00f1\u00edas de financiamiento comercial": {
+          "account_number": "2120",
+          "Pagar\u00e9s": {
+            "account_number": "212005"
+          },
+          "Aceptaciones financieras": {
+            "account_number": "212010"
+          },
+          "Contratos de arrendamiento financiero (leasing)": {
+            "account_number": "212020"
+          }
+        },
+        "Corporaciones de ahorro y vivienda": {
+          "account_number": "2125",
+          "Sobregiros": {
+            "account_number": "212505"
+          },
+          "Pagar\u00e9s": {
+            "account_number": "212510"
+          },
+          "Hipotecarias": {
+            "account_number": "212515"
+          }
+        },
+        "Entidades financieras del exterior": {
+          "account_number": "2130"
+        },
+        "Compromisos de recompra de inversiones negociadas": {
+          "account_number": "2135",
+          "Acciones": {
+            "account_number": "213505"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "213510"
+          },
+          "Bonos": {
+            "account_number": "213515"
+          },
+          "C\u00e9dulas": {
+            "account_number": "213520"
+          },
+          "Certificados": {
+            "account_number": "213525"
+          },
+          "Papeles comerciales": {
+            "account_number": "213530"
+          },
+          "T\u00edtulos": {
+            "account_number": "213535"
+          },
+          "Aceptaciones bancarias o financieras": {
+            "account_number": "213540"
+          },
+          "Otros": {
+            "account_number": "213595"
+          }
+        },
+        "Compromisos de recompra de cartera negociada": {
+          "account_number": "2140"
+        },
+        "Obligaciones gubernamentales": {
+          "account_number": "2145",
+          "Gobierno Nacional": {
+            "account_number": "214505"
+          },
+          "Entidades oficiales": {
+            "account_number": "214510"
+          }
+        },
+        "Otras obligaciones": {
+          "account_number": "2195",
+          "Particulares": {
+            "account_number": "219505"
+          },
+          "Compa\u00f1\u00edas vinculadas": {
+            "account_number": "219510"
+          },
+          "Casa matriz": {
+            "account_number": "219515"
+          },
+          "Socios o accionistas": {
+            "account_number": "219520"
+          },
+          "Fondos y cooperativas": {
+            "account_number": "219525"
+          },
+          "Directores": {
+            "account_number": "219530"
+          },
+          "Otras": {
+            "account_number": "219595"
+          }
+        }
+      },
+      "Proveedores": {
+        "account_number": "22",
+        "account_type": "Payable",
+        "Nacionales": {
+          "account_number": "2205",
+          "account_type": "Payable"
+        },
+        "Del exterior": {
+          "account_number": "2210",
+          "account_type": "Payable"
+        },
+        "Cuentas corrientes comerciales": {
+          "account_number": "2215",
+          "account_type": "Payable"
+        },
+        "Casa matriz": {
+          "account_number": "2220",
+          "account_type": "Payable"
+        },
+        "Compa\u00f1\u00edas vinculadas": {
+          "account_number": "2225",
+          "account_type": "Payable"
+        }
+      },
+      "Cuentas por pagar": {
+        "account_number": "23",
+        "account_type": "Payable",
+        "Cuentas corrientes comerciales": {
+          "account_number": "2305",
+          "account_type": "Payable"
+        },
+        "A casa matriz": {
+          "account_number": "2310",
+          "account_type": "Payable"
+        },
+        "A compa\u00f1\u00edas vinculadas": {
+          "account_number": "2315",
+          "account_type": "Payable"
+        },
+        "A contratistas": {
+          "account_number": "2320",
+          "account_type": "Payable"
+        },
+        "\u00d3rdenes de compra por utilizar": {
+          "account_number": "2330",
+          "account_type": "Payable"
+        },
+        "Costos y gastos por pagar": {
+          "account_number": "2335",
+          "account_type": "Payable",
+          "Gastos financieros": {
+            "account_number": "233505",
+            "account_type": "Payable"
+          },
+          "Gastos legales": {
+            "account_number": "233510",
+            "account_type": "Payable"
+          },
+          "Libros, suscripciones, peri\u00f3dicos y revistas": {
+            "account_number": "233515",
+            "account_type": "Payable"
+          },
+          "Comisiones": {
+            "account_number": "233520",
+            "account_type": "Payable"
+          },
+          "Honorarios": {
+            "account_number": "233525",
+            "account_type": "Payable"
+          },
+          "Servicios t\u00e9cnicos": {
+            "account_number": "233530",
+            "account_type": "Payable"
+          },
+          "Servicios de mantenimiento": {
+            "account_number": "233535",
+            "account_type": "Payable"
+          },
+          "Arrendamientos": {
+            "account_number": "233540",
+            "account_type": "Payable"
+          },
+          "Transportes, fletes y acarreos": {
+            "account_number": "233545",
+            "account_type": "Payable"
+          },
+          "Servicios p\u00fablicos": {
+            "account_number": "233550",
+            "account_type": "Payable"
+          },
+          "Seguros": {
+            "account_number": "233555",
+            "account_type": "Payable"
+          },
+          "Gastos de viaje": {
+            "account_number": "233560",
+            "account_type": "Payable"
+          },
+          "Gastos de representaci\u00f3n y relaciones p\u00fablicas": {
+            "account_number": "233565",
+            "account_type": "Payable"
+          },
+          "Servicios aduaneros": {
+            "account_number": "233570",
+            "account_type": "Payable"
+          },
+          "Otros": {
+            "account_number": "233595",
+            "account_type": "Payable"
+          }
+        },
+        "Instalamentos por pagar": {
+          "account_number": "2340",
+          "account_type": "Payable"
+        },
+        "Acreedores oficiales": {
+          "account_number": "2345",
+          "account_type": "Payable"
+        },
+        "Regal\u00edas por pagar": {
+          "account_number": "2350",
+          "account_type": "Payable"
+        },
+        "Deudas con accionistas o socios": {
+          "account_number": "2355",
+          "account_type": "Payable",
+          "Accionistas": {
+            "account_number": "235505",
+            "account_type": "Payable"
+          },
+          "Socios": {
+            "account_number": "235510",
+            "account_type": "Payable"
+          }
+        },
+        "Deudas con directores": {
+          "account_number": "2357",
+          "account_type": "Payable"
+        },
+        "Dividendos o participaciones por pagar": {
+          "account_number": "2360",
+          "account_type": "Payable",
+          "Dividendos": {
+            "account_number": "236005",
+            "account_type": "Payable"
+          },
+          "Participaciones": {
+            "account_number": "236010",
+            "account_type": "Payable"
+          }
+        },
+        "Retenci\u00f3n en la fuente": {
+          "account_number": "2365",
+          "account_type": "Payable",
+          "Salarios y pagos laborales": {
+            "account_number": "236505",
+            "account_type": "Payable"
+          },
+          "Dividendos y/o participaciones": {
+            "account_number": "236510",
+            "account_type": "Payable"
+          },
+          "Honorarios": {
+            "account_number": "236515",
+            "account_type": "Payable"
+          },
+          "Comisiones": {
+            "account_number": "236520",
+            "account_type": "Payable"
+          },
+          "Servicios": {
+            "account_number": "236525",
+            "account_type": "Payable"
+          },
+          "Arrendamientos": {
+            "account_number": "236530",
+            "account_type": "Payable"
+          },
+          "Rendimientos financieros": {
+            "account_number": "236535",
+            "account_type": "Payable"
+          },
+          "Compras": {
+            "account_number": "236540",
+            "account_type": "Payable"
+          },
+          "Loter\u00edas, rifas, apuestas y similares": {
+            "account_number": "236545",
+            "account_type": "Payable"
+          },
+          "Por pagos al exterior": {
+            "account_number": "236550",
+            "account_type": "Payable"
+          },
+          "Por ingresos obtenidos en el exterior": {
+            "account_number": "236555",
+            "account_type": "Payable"
+          },
+          "Enajenaci\u00f3n propiedades planta y equipo, personas naturales": {
+            "account_number": "236560",
+            "account_type": "Payable"
+          },
+          "Por impuesto de timbre": {
+            "account_number": "236565",
+            "account_type": "Payable"
+          },
+          "Otras retenciones y patrimonio": {
+            "account_number": "236570",
+            "account_type": "Payable"
+          },
+          "Autorretenciones": {
+            "account_number": "236575",
+            "account_type": "Payable"
+          }
+        },
+        "Impuesto a las ventas retenido": {
+          "account_number": "2367",
+          "account_type": "Payable"
+        },
+        "Impuesto de industria y comercio retenido": {
+          "account_number": "2368",
+          "account_type": "Payable"
+        },
+        "Retenciones y aportes de n\u00f3mina": {
+          "account_number": "2370",
+          "account_type": "Payable",
+          "Aportes a entidades promotoras de salud, EPS": {
+            "account_number": "237005",
+            "account_type": "Payable"
+          },
+          "Aportes a administradoras de riesgos profesionales, ARP": {
+            "account_number": "237006",
+            "account_type": "Payable"
+          },
+          "Aportes al ICBF, SENA y cajas de compensaci\u00f3n": {
+            "account_number": "237010",
+            "account_type": "Payable"
+          },
+          "Aportes al FIC": {
+            "account_number": "237015",
+            "account_type": "Payable"
+          },
+          "Embargos judiciales": {
+            "account_number": "237025",
+            "account_type": "Payable"
+          },
+          "Libranzas": {
+            "account_number": "237030",
+            "account_type": "Payable"
+          },
+          "Sindicatos": {
+            "account_number": "237035",
+            "account_type": "Payable"
+          },
+          "Cooperativas": {
+            "account_number": "237040",
+            "account_type": "Payable"
+          },
+          "Fondos": {
+            "account_number": "237045",
+            "account_type": "Payable"
+          },
+          "Otros": {
+            "account_number": "237095",
+            "account_type": "Payable"
+          }
+        },
+        "Cuotas por devolver": {
+          "account_number": "2375",
+          "account_type": "Payable"
+        },
+        "Acreedores varios": {
+          "account_number": "2380",
+          "account_type": "Payable",
+          "Depositarios": {
+            "account_number": "238005",
+            "account_type": "Payable"
+          },
+          "Comisionistas de bolsas": {
+            "account_number": "238010",
+            "account_type": "Payable"
+          },
+          "Sociedad administradora-Fondos de inversi\u00f3n": {
+            "account_number": "238015",
+            "account_type": "Payable"
+          },
+          "Reintegros por pagar": {
+            "account_number": "238020",
+            "account_type": "Payable"
+          },
+          "Fondo de perseverancia": {
+            "account_number": "238025",
+            "account_type": "Payable"
+          },
+          "Fondos de cesant\u00edas y/o pensiones": {
+            "account_number": "238030",
+            "account_type": "Payable"
+          },
+          "Donaciones asignadas por pagar": {
+            "account_number": "238035",
+            "account_type": "Payable"
+          },
+          "Otros": {
+            "account_number": "238095",
+            "account_type": "Payable"
+          }
+        }
+      },
+      "Impuestos, grav\u00e1menes y tasas": {
+        "account_number": "24",
+        "account_type": "Tax",
+        "De renta y complementarios": {
+          "account_number": "2404",
+          "account_type": "Tax",
+          "Vigencia fiscal corriente": {
+            "account_number": "240405",
+            "account_type": "Tax"
+          },
+          "Vigencias fiscales anteriores": {
+            "account_number": "240410",
+            "account_type": "Tax"
+          }
+        },
+        "Impuesto sobre las ventas por pagar": {
+          "account_number": "2408",
+          "account_type": "Tax"
+        },
+        "De industria y comercio": {
+          "account_number": "2412",
+          "account_type": "Tax",
+          "Vigencia fiscal corriente": {
+            "account_number": "241205",
+            "account_type": "Tax"
+          },
+          "Vigencias fiscales anteriores": {
+            "account_number": "241210",
+            "account_type": "Tax"
+          }
+        },
+        "A la propiedad ra\u00edz": {
+          "account_number": "2416",
+          "account_type": "Tax"
+        },
+        "Derechos sobre instrumentos p\u00fablicos": {
+          "account_number": "2420",
+          "account_type": "Tax"
+        },
+        "De valorizaci\u00f3n": {
+          "account_number": "2424",
+          "account_type": "Tax",
+          "Vigencia fiscal corriente": {
+            "account_number": "242405",
+            "account_type": "Tax"
+          },
+          "Vigencias fiscales anteriores": {
+            "account_number": "242410",
+            "account_type": "Tax"
+          }
+        },
+        "De turismo": {
+          "account_number": "2428",
+          "account_type": "Tax"
+        },
+        "Tasa por utilizaci\u00f3n de puertos": {
+          "account_number": "2432",
+          "account_type": "Tax"
+        },
+        "De veh\u00edculos": {
+          "account_number": "2436",
+          "account_type": "Tax",
+          "Vigencia fiscal corriente": {
+            "account_number": "243605",
+            "account_type": "Tax"
+          },
+          "Vigencias fiscales anteriores": {
+            "account_number": "243610",
+            "account_type": "Tax"
+          }
+        },
+        "De espect\u00e1culos p\u00fablicos": {
+          "account_number": "2440",
+          "account_type": "Tax"
+        },
+        "De hidrocarburos y minas": {
+          "account_number": "2444",
+          "account_type": "Tax",
+          "De hidrocarburos": {
+            "account_number": "244405",
+            "account_type": "Tax"
+          },
+          "De minas": {
+            "account_number": "244410",
+            "account_type": "Tax"
+          }
+        },
+        "Regal\u00edas e impuestos a la peque\u00f1a y mediana miner\u00eda": {
+          "account_number": "2448",
+          "account_type": "Tax"
+        },
+        "A las exportaciones cafeteras": {
+          "account_number": "2452",
+          "account_type": "Tax"
+        },
+        "A las importaciones": {
+          "account_number": "2456",
+          "account_type": "Tax"
+        },
+        "Cuotas de fomento": {
+          "account_number": "2460",
+          "account_type": "Tax"
+        },
+        "De licores, cervezas y cigarrillos": {
+          "account_number": "2464",
+          "account_type": "Tax",
+          "De licores": {
+            "account_number": "246405",
+            "account_type": "Tax"
+          },
+          "De cervezas": {
+            "account_number": "246410",
+            "account_type": "Tax"
+          },
+          "De cigarrillos": {
+            "account_number": "246415",
+            "account_type": "Tax"
+          }
+        },
+        "Al sacrificio de ganado": {
+          "account_number": "2468",
+          "account_type": "Tax"
+        },
+        "Al azar y juegos": {
+          "account_number": "2472",
+          "account_type": "Tax"
+        },
+        "Grav\u00e1menes y regal\u00edas por utilizaci\u00f3n del suelo": {
+          "account_number": "2476",
+          "account_type": "Tax"
+        },
+        "Otros": {
+          "account_number": "2495",
+          "account_type": "Tax"
+        }
+      },
+      "Obligaciones laborales": {
+        "account_number": "25",
+        "Salarios por pagar": {
+          "account_number": "2505"
+        },
+        "Cesant\u00edas consolidadas": {
+          "account_number": "2510",
+          "Ley laboral anterior": {
+            "account_number": "251005"
+          },
+          "Ley 50 de 1990 y normas posteriores": {
+            "account_number": "251010"
+          }
+        },
+        "Intereses sobre cesant\u00edas": {
+          "account_number": "2515"
+        },
+        "Prima de servicios": {
+          "account_number": "2520"
+        },
+        "Vacaciones consolidadas": {
+          "account_number": "2525"
+        },
+        "Prestaciones extralegales": {
+          "account_number": "2530",
+          "Primas": {
+            "account_number": "253005"
+          },
+          "Auxilios": {
+            "account_number": "253010"
+          },
+          "Dotaci\u00f3n y suministro a trabajadores": {
+            "account_number": "253015"
+          },
+          "Bonificaciones": {
+            "account_number": "253020"
+          },
+          "Seguros": {
+            "account_number": "253025"
+          },
+          "Otras": {
+            "account_number": "253095"
+          }
+        },
+        "Pensiones por pagar": {
+          "account_number": "2532"
+        },
+        "Cuotas partes pensiones de jubilaci\u00f3n": {
+          "account_number": "2535"
+        },
+        "Indemnizaciones laborales": {
+          "account_number": "2540"
+        }
+      },
+      "Pasivos estimados y provisiones": {
+        "account_number": "26",
+        "Para costos y gastos": {
+          "account_number": "2605",
+          "Intereses": {
+            "account_number": "260505"
+          },
+          "Comisiones": {
+            "account_number": "260510"
+          },
+          "Honorarios": {
+            "account_number": "260515"
+          },
+          "Servicios t\u00e9cnicos": {
+            "account_number": "260520"
+          },
+          "Transportes, fletes y acarreos": {
+            "account_number": "260525"
+          },
+          "Gastos de viaje": {
+            "account_number": "260530"
+          },
+          "Servicios p\u00fablicos": {
+            "account_number": "260535"
+          },
+          "Regal\u00edas": {
+            "account_number": "260540"
+          },
+          "Garant\u00edas": {
+            "account_number": "260545"
+          },
+          "Materiales y repuestos": {
+            "account_number": "260550"
+          },
+          "Otros": {
+            "account_number": "260595"
+          }
+        },
+        "Para obligaciones laborales": {
+          "account_number": "2610",
+          "Cesant\u00edas": {
+            "account_number": "261005"
+          },
+          "Intereses sobre cesant\u00edas": {
+            "account_number": "261010"
+          },
+          "Vacaciones": {
+            "account_number": "261015"
+          },
+          "Prima de servicios": {
+            "account_number": "261020"
+          },
+          "Prestaciones extralegales": {
+            "account_number": "261025"
+          },
+          "Vi\u00e1ticos": {
+            "account_number": "261030"
+          },
+          "Otras": {
+            "account_number": "261095"
+          }
+        },
+        "Para obligaciones fiscales": {
+          "account_number": "2615",
+          "De renta y complementarios": {
+            "account_number": "261505"
+          },
+          "De industria y comercio": {
+            "account_number": "261510"
+          },
+          "Tasa por utilizaci\u00f3n de puertos": {
+            "account_number": "261515"
+          },
+          "De veh\u00edculos": {
+            "account_number": "261520"
+          },
+          "De hidrocarburos y minas": {
+            "account_number": "261525"
+          },
+          "Otros": {
+            "account_number": "261595"
+          }
+        },
+        "Pensiones de jubilaci\u00f3n": {
+          "account_number": "2620",
+          "C\u00e1lculo actuarial pensiones de jubilaci\u00f3n": {
+            "account_number": "262005"
+          },
+          "Pensiones de jubilaci\u00f3n por amortizar (DB)": {
+            "account_number": "262010"
+          }
+        },
+        "Para obras de urbanismo": {
+          "account_number": "2625",
+          "Acueducto y alcantarillado": {
+            "account_number": "262505"
+          },
+          "Energ\u00eda el\u00e9ctrica": {
+            "account_number": "262510"
+          },
+          "Tel\u00e9fonos": {
+            "account_number": "262515"
+          },
+          "Otros": {
+            "account_number": "262595"
+          }
+        },
+        "Para mantenimiento y reparaciones": {
+          "account_number": "2630",
+          "Terrenos": {
+            "account_number": "263005"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "263010"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "263015"
+          },
+          "Equipo de oficina": {
+            "account_number": "263020"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "263025"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "263030"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "263035"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "263040"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "263045"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "263050"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "263055"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "263060"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "263065"
+          },
+          "Envases y empaques": {
+            "account_number": "263070"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "263075"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "263080"
+          },
+          "Pozos artesianos": {
+            "account_number": "263085"
+          },
+          "Otros": {
+            "account_number": "263095"
+          }
+        },
+        "Para contingencias": {
+          "account_number": "2635",
+          "Multas y sanciones autoridades administrativas": {
+            "account_number": "263505"
+          },
+          "Intereses por multas y sanciones": {
+            "account_number": "263510"
+          },
+          "Reclamos": {
+            "account_number": "263515"
+          },
+          "Laborales": {
+            "account_number": "263520"
+          },
+          "Civiles": {
+            "account_number": "263525"
+          },
+          "Penales": {
+            "account_number": "263530"
+          },
+          "Administrativos": {
+            "account_number": "263535"
+          },
+          "Comerciales": {
+            "account_number": "263540"
+          },
+          "Otras": {
+            "account_number": "263595"
+          }
+        },
+        "Para obligaciones de garant\u00edas": {
+          "account_number": "2640"
+        },
+        "Provisiones diversas": {
+          "account_number": "2695",
+          "Para beneficencia": {
+            "account_number": "269505"
+          },
+          "Para comunicaciones": {
+            "account_number": "269510"
+          },
+          "Para p\u00e9rdida en transporte": {
+            "account_number": "269515"
+          },
+          "Para operaci\u00f3n": {
+            "account_number": "269520"
+          },
+          "Para protecci\u00f3n de bienes agotables": {
+            "account_number": "269525"
+          },
+          "Para ajustes en redenci\u00f3n de unidades": {
+            "account_number": "269530"
+          },
+          "Autoseguro": {
+            "account_number": "269535"
+          },
+          "Planes y programas de reforestaci\u00f3n y electrificaci\u00f3n": {
+            "account_number": "269540"
+          },
+          "Otras": {
+            "account_number": "269595"
+          }
+        }
+      },
+      "Diferidos": {
+        "account_number": "27",
+        "Ingresos recibidos por anticipado": {
+          "account_number": "2705",
+          "Intereses": {
+            "account_number": "270505"
+          },
+          "Comisiones": {
+            "account_number": "270510"
+          },
+          "Arrendamientos": {
+            "account_number": "270515"
+          },
+          "Honorarios": {
+            "account_number": "270520"
+          },
+          "Servicios t\u00e9cnicos": {
+            "account_number": "270525"
+          },
+          "De suscriptores": {
+            "account_number": "270530"
+          },
+          "Transportes, fletes y acarreos": {
+            "account_number": "270535"
+          },
+          "Mercanc\u00eda en tr\u00e1nsito ya vendida": {
+            "account_number": "270540"
+          },
+          "Matr\u00edculas y pensiones": {
+            "account_number": "270545"
+          },
+          "Cuotas de administraci\u00f3n": {
+            "account_number": "270550"
+          },
+          "Otros": {
+            "account_number": "270595"
+          }
+        },
+        "Abonos diferidos": {
+          "account_number": "2710",
+          "Reajuste del sistema": {
+            "account_number": "271005"
+          }
+        },
+        "Utilidad diferida en ventas a plazos": {
+          "account_number": "2715"
+        },
+        "Cr\u00e9dito por correcci\u00f3n monetaria diferida": {
+          "account_number": "2720"
+        },
+        "Impuestos diferidos": {
+          "account_number": "2725",
+          "Por depreciaci\u00f3n flexible": {
+            "account_number": "272505"
+          },
+          "Diversos": {
+            "account_number": "272595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "272599"
+          }
+        }
+      },
+      "Otros pasivos": {
+        "account_number": "28",
+        "Anticipos y avances recibidos": {
+          "account_number": "2805",
+          "De clientes": {
+            "account_number": "280505"
+          },
+          "Sobre contratos": {
+            "account_number": "280510"
+          },
+          "Para obras en proceso": {
+            "account_number": "280515"
+          },
+          "Otros": {
+            "account_number": "280595"
+          }
+        },
+        "Dep\u00f3sitos recibidos": {
+          "account_number": "2810",
+          "Para futura suscripci\u00f3n de acciones": {
+            "account_number": "281005"
+          },
+          "Para futuro pago de cuotas o derechos sociales": {
+            "account_number": "281010"
+          },
+          "Para garant\u00eda en la prestaci\u00f3n de servicios": {
+            "account_number": "281015"
+          },
+          "Para garant\u00eda de contratos": {
+            "account_number": "281020"
+          },
+          "De licitaciones": {
+            "account_number": "281025"
+          },
+          "De manejo de bienes": {
+            "account_number": "281030"
+          },
+          "Fondo de reserva": {
+            "account_number": "281035"
+          },
+          "Otros": {
+            "account_number": "281095"
+          }
+        },
+        "Ingresos recibidos para terceros": {
+          "account_number": "2815",
+          "Valores recibidos para terceros": {
+            "account_number": "281505"
+          },
+          "Venta por cuenta de terceros": {
+            "account_number": "281510"
+          }
+        },
+        "Cuentas de operaci\u00f3n conjunta": {
+          "account_number": "2820"
+        },
+        "Retenciones a terceros sobre contratos": {
+          "account_number": "2825",
+          "Cumplimiento obligaciones laborales": {
+            "account_number": "282505"
+          },
+          "Para estabilidad de obra": {
+            "account_number": "282510"
+          },
+          "Garant\u00eda cumplimiento de contratos": {
+            "account_number": "282515"
+          }
+        },
+        "Embargos judiciales": {
+          "account_number": "2830",
+          "Indemnizaciones": {
+            "account_number": "283005"
+          },
+          "Dep\u00f3sitos judiciales": {
+            "account_number": "283010"
+          }
+        },
+        "Acreedores del sistema": {
+          "account_number": "2835",
+          "Cuotas netas": {
+            "account_number": "283505"
+          },
+          "Grupos en formaci\u00f3n": {
+            "account_number": "283510"
+          }
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "2840"
+        },
+        "Diversos": {
+          "account_number": "2895",
+          "Pr\u00e9stamos de productos": {
+            "account_number": "289505"
+          },
+          "Reembolso de costos exploratorios": {
+            "account_number": "289510"
+          },
+          "Programa de extensi\u00f3n agropecuaria": {
+            "account_number": "289515"
+          }
+        }
+      },
+      "Bonos y papeles comerciales": {
+        "account_number": "29",
+        "Bonos en circulaci\u00f3n": {
+          "account_number": "2905"
+        },
+        "Bonos obligatoriamente convertibles en acciones": {
+          "account_number": "2910"
+        },
+        "Papeles comerciales": {
+          "account_number": "2915"
+        },
+        "Bonos pensionales": {
+          "account_number": "2920",
+          "Valor bonos pensionales": {
+            "account_number": "292005"
+          },
+          "Bonos pensionales por amortizar (DB)": {
+            "account_number": "292010"
+          },
+          "Intereses causados sobre bonos pensionales": {
+            "account_number": "292015"
+          }
+        },
+        "T\u00edtulos pensionales": {
+          "account_number": "2925",
+          "Valor t\u00edtulos pensionales": {
+            "account_number": "292505"
+          },
+          "T\u00edtulos pensionales por amortizar (DB)": {
+            "account_number": "292510"
+          },
+          "Intereses causados sobre t\u00edtulos pensionales": {
+            "account_number": "292515"
+          }
+        }
+      }
+    },
+    "Patrimonio": {
+      "account_number": "3",
+      "account_type": "Equity",
+      "root_type": "Equity",
+      "Capital social": {
+        "account_number": "31",
+        "account_type": "Equity",
+        "Capital suscrito y pagado": {
+          "account_number": "3105",
+          "account_type": "Equity",
+          "Capital autorizado": {
+            "account_number": "310505",
+            "account_type": "Equity"
+          },
+          "Capital por suscribir (DB)": {
+            "account_number": "310510",
+            "account_type": "Equity"
+          },
+          "Capital suscrito por cobrar (DB)": {
+            "account_number": "310515",
+            "account_type": "Equity"
+          }
+        },
+        "Aportes sociales": {
+          "account_number": "3115",
+          "account_type": "Equity",
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "311505",
+            "account_type": "Equity"
+          },
+          "Aportes de socios-fondo mutuo de inversi\u00f3n": {
+            "account_number": "311510",
+            "account_type": "Equity"
+          },
+          "Contribuci\u00f3n de la empresa-fondo mutuo de inversi\u00f3n": {
+            "account_number": "311515",
+            "account_type": "Equity"
+          },
+          "Suscripciones del p\u00fablico": {
+            "account_number": "311520",
+            "account_type": "Equity"
+          }
+        },
+        "Capital asignado": {
+          "account_number": "3120",
+          "account_type": "Equity"
+        },
+        "Inversi\u00f3n suplementaria al capital asignado": {
+          "account_number": "3125",
+          "account_type": "Equity"
+        },
+        "Capital de personas naturales": {
+          "account_number": "3130",
+          "account_type": "Equity"
+        },
+        "Aportes del Estado": {
+          "account_number": "3135",
+          "account_type": "Equity"
+        },
+        "Fondo social": {
+          "account_number": "3140",
+          "account_type": "Equity"
+        }
+      },
+      "Super\u00e1vit de capital": {
+        "account_number": "32",
+        "account_type": "Equity",
+        "Prima en colocaci\u00f3n de acciones, cuotas o partes de inter\u00e9s social": {
+          "account_number": "3205",
+          "account_type": "Equity",
+          "Prima en colocaci\u00f3n de acciones": {
+            "account_number": "320505",
+            "account_type": "Equity"
+          },
+          "Prima en colocaci\u00f3n de acciones por cobrar (DB)": {
+            "account_number": "320510",
+            "account_type": "Equity"
+          },
+          "Prima en colocaci\u00f3n de cuotas o partes de inter\u00e9s social": {
+            "account_number": "320515",
+            "account_type": "Equity"
+          }
+        },
+        "Donaciones": {
+          "account_number": "3210",
+          "account_type": "Equity",
+          "En dinero": {
+            "account_number": "321005",
+            "account_type": "Equity"
+          },
+          "En valores mobiliarios": {
+            "account_number": "321010",
+            "account_type": "Equity"
+          },
+          "En bienes muebles": {
+            "account_number": "321015",
+            "account_type": "Equity"
+          },
+          "En bienes inmuebles": {
+            "account_number": "321020",
+            "account_type": "Equity"
+          },
+          "En intangibles": {
+            "account_number": "321025",
+            "account_type": "Equity"
+          }
+        },
+        "Cr\u00e9dito mercantil": {
+          "account_number": "3215",
+          "account_type": "Equity"
+        },
+        "Know how": {
+          "account_number": "3220",
+          "account_type": "Equity"
+        },
+        "Super\u00e1vit m\u00e9todo de participaci\u00f3n": {
+          "account_number": "3225",
+          "account_type": "Equity",
+          "De acciones": {
+            "account_number": "322505",
+            "account_type": "Equity"
+          },
+          "De cuotas o partes de inter\u00e9s social": {
+            "account_number": "322510",
+            "account_type": "Equity"
+          }
+        }
+      },
+      "Reservas": {
+        "account_number": "33",
+        "account_type": "Equity",
+        "Reservas obligatorias": {
+          "account_number": "3305",
+          "account_type": "Equity",
+          "Reserva legal": {
+            "account_number": "330505",
+            "account_type": "Equity"
+          },
+          "Reservas por disposiciones fiscales": {
+            "account_number": "330510",
+            "account_type": "Equity"
+          },
+          "Reserva para readquisici\u00f3n de acciones": {
+            "account_number": "330515",
+            "account_type": "Equity"
+          },
+          "Acciones propias readquiridas (DB)": {
+            "account_number": "330516",
+            "account_type": "Equity"
+          },
+          "Reserva para readquisici\u00f3n de cuotas o partes de inter\u00e9s social": {
+            "account_number": "330517",
+            "account_type": "Equity"
+          },
+          "Cuotas o partes de inter\u00e9s social propias readquiridas (DB)": {
+            "account_number": "330518",
+            "account_type": "Equity"
+          },
+          "Reserva para extensi\u00f3n agropecuaria": {
+            "account_number": "330520",
+            "account_type": "Equity"
+          },
+          "Reserva Ley 7\u00aa de 1990": {
+            "account_number": "330525",
+            "account_type": "Equity"
+          },
+          "Reserva para reposici\u00f3n de semovientes": {
+            "account_number": "330530",
+            "account_type": "Equity"
+          },
+          "Reserva Ley 4\u00aa de 1980": {
+            "account_number": "330535",
+            "account_type": "Equity"
+          },
+          "Otras": {
+            "account_number": "330595",
+            "account_type": "Equity"
+          }
+        },
+        "Reservas estatutarias": {
+          "account_number": "3310",
+          "account_type": "Equity",
+          "Para futuras capitalizaciones": {
+            "account_number": "331005",
+            "account_type": "Equity"
+          },
+          "Para reposici\u00f3n de activos": {
+            "account_number": "331010",
+            "account_type": "Equity"
+          },
+          "Para futuros ensanches": {
+            "account_number": "331015",
+            "account_type": "Equity"
+          },
+          "Otras": {
+            "account_number": "331095",
+            "account_type": "Equity"
+          }
+        },
+        "Reservas ocasionales": {
+          "account_number": "3315",
+          "account_type": "Equity",
+          "Para beneficencia y civismo": {
+            "account_number": "331505",
+            "account_type": "Equity"
+          },
+          "Para futuras capitalizaciones": {
+            "account_number": "331510",
+            "account_type": "Equity"
+          },
+          "Para futuros ensanches": {
+            "account_number": "331515",
+            "account_type": "Equity"
+          },
+          "Para adquisici\u00f3n o reposici\u00f3n de propiedades, planta y equipo": {
+            "account_number": "331520",
+            "account_type": "Equity"
+          },
+          "Para investigaciones y desarrollo": {
+            "account_number": "331525",
+            "account_type": "Equity"
+          },
+          "Para fomento econ\u00f3mico": {
+            "account_number": "331530",
+            "account_type": "Equity"
+          },
+          "Para capital de trabajo": {
+            "account_number": "331535",
+            "account_type": "Equity"
+          },
+          "Para estabilizaci\u00f3n de rendimientos": {
+            "account_number": "331540",
+            "account_type": "Equity"
+          },
+          "A disposici\u00f3n del m\u00e1ximo \u00f3rgano social": {
+            "account_number": "331545",
+            "account_type": "Equity"
+          },
+          "Otras": {
+            "account_number": "331595",
+            "account_type": "Equity"
+          }
+        }
+      },
+      "Revalorizaci\u00f3n del patrimonio": {
+        "account_number": "34",
+        "account_type": "Equity",
+        "Ajustes por inflaci\u00f3n": {
+          "account_number": "3405",
+          "account_type": "Equity",
+          "De capital social": {
+            "account_number": "340505",
+            "account_type": "Equity"
+          },
+          "De super\u00e1vit de capital": {
+            "account_number": "340510",
+            "account_type": "Equity"
+          },
+          "De reservas": {
+            "account_number": "340515",
+            "account_type": "Equity"
+          },
+          "De resultados de ejercicios anteriores": {
+            "account_number": "340520",
+            "account_type": "Equity"
+          },
+          "De activos en per\u00edodo improductivo": {
+            "account_number": "340525",
+            "account_type": "Equity"
+          },
+          "De saneamiento fiscal": {
+            "account_number": "340530",
+            "account_type": "Equity"
+          },
+          "De ajustes Decreto 3019 de 1989": {
+            "account_number": "340535",
+            "account_type": "Equity"
+          },
+          "De dividendos y participaciones decretadas en acciones, cuotas o partes de inter\u00e9s social": {
+            "account_number": "340540",
+            "account_type": "Equity"
+          },
+          "Super\u00e1vit m\u00e9todo de participaci\u00f3n": {
+            "account_number": "340545",
+            "account_type": "Equity"
+          }
+        },
+        "Saneamiento fiscal": {
+          "account_number": "3410",
+          "account_type": "Equity"
+        },
+        "Ajustes por inflaci\u00f3n Decreto 3019 de 1989": {
+          "account_number": "3415",
+          "account_type": "Equity"
+        }
+      },
+      "Dividendos o participaciones decretados en acciones, cuotas o partes de inter\u00e9s social": {
+        "account_number": "35",
+        "account_type": "Equity",
+        "Dividendos decretados en acciones": {
+          "account_number": "3505",
+          "account_type": "Equity"
+        },
+        "Participaciones decretadas en cuotas o partes de inter\u00e9s social": {
+          "account_number": "3510",
+          "account_type": "Equity"
+        }
+      },
+      "Resultados del ejercicio": {
+        "account_number": "36",
+        "account_type": "Equity",
+        "Utilidad del ejercicio": {
+          "account_number": "3605",
+          "account_type": "Equity"
+        },
+        "P\u00e9rdida del ejercicio": {
+          "account_number": "3610",
+          "account_type": "Equity"
+        }
+      },
+      "Resultados de ejercicios anteriores": {
+        "account_number": "37",
+        "account_type": "Equity",
+        "Utilidades acumuladas": {
+          "account_number": "3705",
+          "account_type": "Equity"
+        },
+        "P\u00e9rdidas acumuladas": {
+          "account_number": "3710",
+          "account_type": "Equity"
+        }
+      },
+      "Super\u00e1vit por valorizaciones": {
+        "account_number": "38",
+        "account_type": "Equity",
+        "De inversiones": {
+          "account_number": "3805",
+          "account_type": "Equity",
+          "Acciones": {
+            "account_number": "380505",
+            "account_type": "Equity"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "380510",
+            "account_type": "Equity"
+          },
+          "Derechos fiduciarios": {
+            "account_number": "380515",
+            "account_type": "Equity"
+          }
+        },
+        "De propiedades, planta y equipo": {
+          "account_number": "3810",
+          "account_type": "Equity",
+          "Terrenos": {
+            "account_number": "381004",
+            "account_type": "Equity"
+          },
+          "Materiales proyectos petroleros": {
+            "account_number": "381006",
+            "account_type": "Equity"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "381008",
+            "account_type": "Equity"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "381012",
+            "account_type": "Equity"
+          },
+          "Equipo de oficina": {
+            "account_number": "381016",
+            "account_type": "Equity"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "381020",
+            "account_type": "Equity"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "381024",
+            "account_type": "Equity"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "381028",
+            "account_type": "Equity"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "381032",
+            "account_type": "Equity"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "381036",
+            "account_type": "Equity"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "381040",
+            "account_type": "Equity"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "381044",
+            "account_type": "Equity"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "381048",
+            "account_type": "Equity"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "381052",
+            "account_type": "Equity"
+          },
+          "Envases y empaques": {
+            "account_number": "381056",
+            "account_type": "Equity"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "381060",
+            "account_type": "Equity"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "381064",
+            "account_type": "Equity"
+          },
+          "Minas y canteras": {
+            "account_number": "381068",
+            "account_type": "Equity"
+          },
+          "Pozos artesianos": {
+            "account_number": "381072",
+            "account_type": "Equity"
+          },
+          "Yacimientos": {
+            "account_number": "381076",
+            "account_type": "Equity"
+          },
+          "Semovientes": {
+            "account_number": "381080",
+            "account_type": "Equity"
+          }
+        },
+        "De otros activos": {
+          "account_number": "3895",
+          "account_type": "Equity",
+          "Bienes de arte y cultura": {
+            "account_number": "389505",
+            "account_type": "Equity"
+          },
+          "Bienes entregados en comodato": {
+            "account_number": "389510",
+            "account_type": "Equity"
+          },
+          "Bienes recibidos en pago": {
+            "account_number": "389515",
+            "account_type": "Equity"
+          },
+          "Inventario de semovientes": {
+            "account_number": "389520",
+            "account_type": "Equity"
+          }
+        }
+      }
+    },
+    "Ingresos": {
+      "account_number": "4",
+      "account_type": "Income Account",
+      "root_type": "Income",
+      "Operacionales": {
+        "account_number": "41",
+        "account_type": "Income Account",
+        "Agricultura, ganader\u00eda, caza y silvicultura": {
+          "account_number": "4105",
+          "account_type": "Income Account",
+          "Cultivo de cereales": {
+            "account_number": "410505",
+            "account_type": "Income Account"
+          },
+          "Cultivos de hortalizas, legumbres y plantas ornamentales": {
+            "account_number": "410510",
+            "account_type": "Income Account"
+          },
+          "Cultivos de frutas, nueces y plantas arom\u00e1ticas": {
+            "account_number": "410515",
+            "account_type": "Income Account"
+          },
+          "Cultivo de caf\u00e9": {
+            "account_number": "410520",
+            "account_type": "Income Account"
+          },
+          "Cultivo de flores": {
+            "account_number": "410525",
+            "account_type": "Income Account"
+          },
+          "Cultivo de ca\u00f1a de az\u00facar": {
+            "account_number": "410530",
+            "account_type": "Income Account"
+          },
+          "Cultivo de algod\u00f3n y plantas para material textil": {
+            "account_number": "410535",
+            "account_type": "Income Account"
+          },
+          "Cultivo de banano": {
+            "account_number": "410540",
+            "account_type": "Income Account"
+          },
+          "Otros cultivos agr\u00edcolas": {
+            "account_number": "410545",
+            "account_type": "Income Account"
+          },
+          "Cr\u00eda de ovejas, cabras, asnos, mulas y burd\u00e9ganos": {
+            "account_number": "410550",
+            "account_type": "Income Account"
+          },
+          "Cr\u00eda de ganado caballar y vacuno": {
+            "account_number": "410555",
+            "account_type": "Income Account"
+          },
+          "Producci\u00f3n av\u00edcola": {
+            "account_number": "410560",
+            "account_type": "Income Account"
+          },
+          "Cr\u00eda de otros animales": {
+            "account_number": "410565",
+            "account_type": "Income Account"
+          },
+          "Servicios agr\u00edcolas y ganaderos": {
+            "account_number": "410570",
+            "account_type": "Income Account"
+          },
+          "Actividad de caza": {
+            "account_number": "410575",
+            "account_type": "Income Account"
+          },
+          "Actividad de silvicultura": {
+            "account_number": "410580",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "410595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "410599",
+            "account_type": "Income Account"
+          }
+        },
+        "Pesca": {
+          "account_number": "4110",
+          "account_type": "Income Account",
+          "Actividad de pesca": {
+            "account_number": "411005",
+            "account_type": "Income Account"
+          },
+          "Explotaci\u00f3n de criaderos de peces": {
+            "account_number": "411010",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "411095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "411099",
+            "account_type": "Income Account"
+          }
+        },
+        "Explotaci\u00f3n de minas y canteras": {
+          "account_number": "4115",
+          "account_type": "Income Account",
+          "Carb\u00f3n": {
+            "account_number": "411505",
+            "account_type": "Income Account"
+          },
+          "Petr\u00f3leo crudo": {
+            "account_number": "411510",
+            "account_type": "Income Account"
+          },
+          "Gas natural": {
+            "account_number": "411512",
+            "account_type": "Income Account"
+          },
+          "Servicios relacionados con extracci\u00f3n de petr\u00f3leo y gas": {
+            "account_number": "411514",
+            "account_type": "Income Account"
+          },
+          "Minerales de hierro": {
+            "account_number": "411515",
+            "account_type": "Income Account"
+          },
+          "Minerales metal\u00edferos no ferrosos": {
+            "account_number": "411520",
+            "account_type": "Income Account"
+          },
+          "Piedra, arena y arcilla": {
+            "account_number": "411525",
+            "account_type": "Income Account"
+          },
+          "Piedras preciosas": {
+            "account_number": "411527",
+            "account_type": "Income Account"
+          },
+          "Oro": {
+            "account_number": "411528",
+            "account_type": "Income Account"
+          },
+          "Otras minas y canteras": {
+            "account_number": "411530",
+            "account_type": "Income Account"
+          },
+          "Prestaci\u00f3n de servicios sector minero": {
+            "account_number": "411532",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "411595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "411599",
+            "account_type": "Income Account"
+          }
+        },
+        "Industrias manufactureras": {
+          "account_number": "4120",
+          "account_type": "Income Account",
+          "Producci\u00f3n y procesamiento de carnes y productos c\u00e1rnicos": {
+            "account_number": "412001",
+            "account_type": "Income Account"
+          },
+          "Productos de pescado": {
+            "account_number": "412002",
+            "account_type": "Income Account"
+          },
+          "Productos de frutas, legumbres y hortalizas": {
+            "account_number": "412003",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de aceites y grasas": {
+            "account_number": "412004",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos l\u00e1cteos": {
+            "account_number": "412005",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos de moliner\u00eda": {
+            "account_number": "412006",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de almidones y derivados": {
+            "account_number": "412007",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de alimentos para animales": {
+            "account_number": "412008",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos para panader\u00eda": {
+            "account_number": "412009",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de az\u00facar y melazas": {
+            "account_number": "412010",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de cacao, chocolate y confiter\u00eda": {
+            "account_number": "412011",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de pastas y productos farin\u00e1ceos": {
+            "account_number": "412012",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos de caf\u00e9": {
+            "account_number": "412013",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros productos alimenticios": {
+            "account_number": "412014",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de bebidas alcoh\u00f3licas y alcohol et\u00edlico": {
+            "account_number": "412015",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de vinos": {
+            "account_number": "412016",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de bebidas malteadas y de malta": {
+            "account_number": "412017",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de bebidas no alcoh\u00f3licas": {
+            "account_number": "412018",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos de tabaco": {
+            "account_number": "412019",
+            "account_type": "Income Account"
+          },
+          "Preparaci\u00f3n e hilatura de fibras textiles y tejedur\u00eda": {
+            "account_number": "412020",
+            "account_type": "Income Account"
+          },
+          "Acabado de productos textiles": {
+            "account_number": "412021",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de art\u00edculos de materiales textiles": {
+            "account_number": "412022",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de tapices y alfombras": {
+            "account_number": "412023",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de cuerdas, cordeles, bramantes y redes": {
+            "account_number": "412024",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros productos textiles": {
+            "account_number": "412025",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de tejidos": {
+            "account_number": "412026",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de prendas de vestir": {
+            "account_number": "412027",
+            "account_type": "Income Account"
+          },
+          "Preparaci\u00f3n, adobo y te\u00f1ido de pieles": {
+            "account_number": "412028",
+            "account_type": "Income Account"
+          },
+          "Curtido, adobo o preparaci\u00f3n de cuero": {
+            "account_number": "412029",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de maletas, bolsos y similares": {
+            "account_number": "412030",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de calzado": {
+            "account_number": "412031",
+            "account_type": "Income Account"
+          },
+          "Producci\u00f3n de madera, art\u00edculos de madera y corcho": {
+            "account_number": "412032",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de pasta y productos de madera, papel y cart\u00f3n": {
+            "account_number": "412033",
+            "account_type": "Income Account"
+          },
+          "Ediciones y publicaciones": {
+            "account_number": "412034",
+            "account_type": "Income Account"
+          },
+          "Impresi\u00f3n": {
+            "account_number": "412035",
+            "account_type": "Income Account"
+          },
+          "Servicios relacionados con la edici\u00f3n y la impresi\u00f3n": {
+            "account_number": "412036",
+            "account_type": "Income Account"
+          },
+          "Reproducci\u00f3n de grabaciones": {
+            "account_number": "412037",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos de horno de coque": {
+            "account_number": "412038",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos de la refinaci\u00f3n de petr\u00f3leo": {
+            "account_number": "412039",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de sustancias qu\u00edmicas b\u00e1sicas": {
+            "account_number": "412040",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de abonos y compuestos de nitr\u00f3geno": {
+            "account_number": "412041",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de pl\u00e1stico y caucho sint\u00e9tico": {
+            "account_number": "412042",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos qu\u00edmicos de uso agropecuario": {
+            "account_number": "412043",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de pinturas, tintas y masillas": {
+            "account_number": "412044",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de productos farmac\u00e9uticos y bot\u00e1nicos": {
+            "account_number": "412045",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de jabones, detergentes y preparados de tocador": {
+            "account_number": "412046",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros productos qu\u00edmicos": {
+            "account_number": "412047",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de fibras": {
+            "account_number": "412048",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de otros productos de caucho": {
+            "account_number": "412049",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de productos de pl\u00e1stico": {
+            "account_number": "412050",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de vidrio y productos de vidrio": {
+            "account_number": "412051",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de productos de cer\u00e1mica, loza, piedra, arcilla y porcelana": {
+            "account_number": "412052",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de cemento, cal y yeso": {
+            "account_number": "412053",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n  de art\u00edculos de hormig\u00f3n, cemento y yeso": {
+            "account_number": "412054",
+            "account_type": "Income Account"
+          },
+          "Corte, tallado y acabado de la piedra": {
+            "account_number": "412055",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros productos minerales no met\u00e1licos": {
+            "account_number": "412056",
+            "account_type": "Income Account"
+          },
+          "Industrias b\u00e1sicas y fundici\u00f3n de hierro y acero": {
+            "account_number": "412057",
+            "account_type": "Income Account"
+          },
+          "Productos primarios de metales preciosos y de metales no ferrosos": {
+            "account_number": "412058",
+            "account_type": "Income Account"
+          },
+          "Fundici\u00f3n de metales no ferrosos": {
+            "account_number": "412059",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de productos met\u00e1licos para uso estructural": {
+            "account_number": "412060",
+            "account_type": "Income Account"
+          },
+          "Forja, prensado, estampado, laminado de metal y pulvimetalurgia": {
+            "account_number": "412061",
+            "account_type": "Income Account"
+          },
+          "Revestimiento de metales y obras de ingenier\u00eda mec\u00e1nica": {
+            "account_number": "412062",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de art\u00edculos de ferreter\u00eda": {
+            "account_number": "412063",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros productos de metal": {
+            "account_number": "412064",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de maquinaria y equipo": {
+            "account_number": "412065",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de equipos de elevaci\u00f3n y manipulaci\u00f3n": {
+            "account_number": "412066",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de aparatos de uso dom\u00e9stico": {
+            "account_number": "412067",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de equipo de oficina": {
+            "account_number": "412068",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de pilas y bater\u00edas primarias": {
+            "account_number": "412069",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de equipo de iluminaci\u00f3n": {
+            "account_number": "412070",
+            "account_type": "Income Account"
+          },
+          "Elaboraci\u00f3n de otros tipos de equipo el\u00e9ctrico": {
+            "account_number": "412071",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de equipos de radio, televisi\u00f3n y comunicaciones": {
+            "account_number": "412072",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de aparatos e instrumentos m\u00e9dicos": {
+            "account_number": "412073",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de instrumentos de medici\u00f3n y control": {
+            "account_number": "412074",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de instrumentos de \u00f3ptica y equipo fotogr\u00e1fico": {
+            "account_number": "412075",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de relojes": {
+            "account_number": "412076",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de veh\u00edculos automotores": {
+            "account_number": "412077",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de carrocer\u00edas para automotores": {
+            "account_number": "412078",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de partes piezas y accesorios para automotores": {
+            "account_number": "412079",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n y reparaci\u00f3n de buques y otras embarcaciones": {
+            "account_number": "412080",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de locomotoras y material rodante para ferrocarriles": {
+            "account_number": "412081",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de aeronaves": {
+            "account_number": "412082",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de motocicletas": {
+            "account_number": "412083",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de bicicletas y sillas de ruedas": {
+            "account_number": "412084",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de otros tipos de transporte": {
+            "account_number": "412085",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de muebles": {
+            "account_number": "412086",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de joyas y art\u00edculos conexos": {
+            "account_number": "412087",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de instrumentos de m\u00fasica": {
+            "account_number": "412088",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de art\u00edculos y equipo para deporte": {
+            "account_number": "412089",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de juegos y juguetes": {
+            "account_number": "412090",
+            "account_type": "Income Account"
+          },
+          "Reciclamiento de desperdicios": {
+            "account_number": "412091",
+            "account_type": "Income Account"
+          },
+          "Productos de otras industrias manufactureras": {
+            "account_number": "412095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "412099",
+            "account_type": "Income Account"
+          }
+        },
+        "Suministro de electricidad, gas y agua": {
+          "account_number": "4125",
+          "account_type": "Income Account",
+          "Generaci\u00f3n, captaci\u00f3n y distribuci\u00f3n de energ\u00eda el\u00e9ctrica": {
+            "account_number": "412505",
+            "account_type": "Income Account"
+          },
+          "Fabricaci\u00f3n de gas y distribuci\u00f3n de combustibles gaseosos": {
+            "account_number": "412510",
+            "account_type": "Income Account"
+          },
+          "Captaci\u00f3n, depuraci\u00f3n y distribuci\u00f3n de agua": {
+            "account_number": "412515",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "412595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "412599",
+            "account_type": "Income Account"
+          }
+        },
+        "Construcci\u00f3n": {
+          "account_number": "4130",
+          "account_type": "Income Account",
+          "Preparaci\u00f3n de terrenos": {
+            "account_number": "413005",
+            "account_type": "Income Account"
+          },
+          "Construcci\u00f3n de edificios y obras de ingenier\u00eda civil": {
+            "account_number": "413010",
+            "account_type": "Income Account"
+          },
+          "Acondicionamiento de edificios": {
+            "account_number": "413015",
+            "account_type": "Income Account"
+          },
+          "Terminaci\u00f3n de edificaciones": {
+            "account_number": "413020",
+            "account_type": "Income Account"
+          },
+          "Alquiler de equipo con operarios": {
+            "account_number": "413025",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "413095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "413099",
+            "account_type": "Income Account"
+          }
+        },
+        "Comercio al por mayor y al por menor": {
+          "account_number": "4135",
+          "account_type": "Income Account",
+          "Venta de veh\u00edculos automotores": {
+            "account_number": "413502",
+            "account_type": "Income Account"
+          },
+          "Mantenimiento, reparaci\u00f3n y lavado de veh\u00edculos automotores": {
+            "account_number": "413504",
+            "account_type": "Income Account"
+          },
+          "Venta de partes, piezas y accesorios de veh\u00edculos automotores": {
+            "account_number": "413506",
+            "account_type": "Income Account"
+          },
+          "Venta de combustibles s\u00f3lidos, l\u00edquidos, gaseosos": {
+            "account_number": "413508",
+            "account_type": "Income Account"
+          },
+          "Venta de lubricantes, aditivos, llantas y lujos para automotores": {
+            "account_number": "413510",
+            "account_type": "Income Account"
+          },
+          "Venta a cambio de retribuci\u00f3n o por contrata": {
+            "account_number": "413512",
+            "account_type": "Income Account"
+          },
+          "Venta de insumos, materias primas agropecuarias y flores": {
+            "account_number": "413514",
+            "account_type": "Income Account"
+          },
+          "Venta de otros insumos y materias primas no agropecuarias": {
+            "account_number": "413516",
+            "account_type": "Income Account"
+          },
+          "Venta de animales vivos y cueros": {
+            "account_number": "413518",
+            "account_type": "Income Account"
+          },
+          "Venta de productos en almacenes no especializados": {
+            "account_number": "413520",
+            "account_type": "Income Account"
+          },
+          "Venta de productos agropecuarios": {
+            "account_number": "413522",
+            "account_type": "Income Account"
+          },
+          "Venta de productos textiles, de vestir, de cuero y calzado": {
+            "account_number": "413524",
+            "account_type": "Income Account"
+          },
+          "Venta de papel y cart\u00f3n": {
+            "account_number": "413526",
+            "account_type": "Income Account"
+          },
+          "Venta de libros, revistas, elementos de papeler\u00eda, \u00fatiles y textos escolares": {
+            "account_number": "413528",
+            "account_type": "Income Account"
+          },
+          "Venta de juegos, juguetes y art\u00edculos deportivos": {
+            "account_number": "413530",
+            "account_type": "Income Account"
+          },
+          "Venta de instrumentos quir\u00fargicos y ortop\u00e9dicos": {
+            "account_number": "413532",
+            "account_type": "Income Account"
+          },
+          "Venta de art\u00edculos en relojer\u00edas y joyer\u00edas": {
+            "account_number": "413534",
+            "account_type": "Income Account"
+          },
+          "Venta de electrodom\u00e9sticos y muebles": {
+            "account_number": "413536",
+            "account_type": "Income Account"
+          },
+          "Venta de productos de aseo, farmac\u00e9uticos, medicinales, y art\u00edculos de tocador": {
+            "account_number": "413538",
+            "account_type": "Income Account"
+          },
+          "Venta de cubiertos, vajillas, cristaler\u00eda, porcelanas, cer\u00e1micas y otros art\u00edculos de uso dom\u00e9stico": {
+            "account_number": "413540",
+            "account_type": "Income Account"
+          },
+          "Venta de materiales de construcci\u00f3n, fontaner\u00eda y calefacci\u00f3n": {
+            "account_number": "413542",
+            "account_type": "Income Account"
+          },
+          "Venta de pinturas y lacas": {
+            "account_number": "413544",
+            "account_type": "Income Account"
+          },
+          "Venta de productos de vidrios y marqueter\u00eda": {
+            "account_number": "413546",
+            "account_type": "Income Account"
+          },
+          "Venta de herramientas y art\u00edculos de ferreter\u00eda": {
+            "account_number": "413548",
+            "account_type": "Income Account"
+          },
+          "Venta de qu\u00edmicos": {
+            "account_number": "413550",
+            "account_type": "Income Account"
+          },
+          "Venta de productos intermedios, desperdicios y desechos": {
+            "account_number": "413552",
+            "account_type": "Income Account"
+          },
+          "Venta de maquinaria, equipo de oficina y programas de computador": {
+            "account_number": "413554",
+            "account_type": "Income Account"
+          },
+          "Venta de art\u00edculos en cacharrer\u00edas y miscel\u00e1neas": {
+            "account_number": "413556",
+            "account_type": "Income Account"
+          },
+          "Venta de instrumentos musicales": {
+            "account_number": "413558",
+            "account_type": "Income Account"
+          },
+          "Venta de art\u00edculos en casas de empe\u00f1o y prender\u00edas": {
+            "account_number": "413560",
+            "account_type": "Income Account"
+          },
+          "Venta de equipo fotogr\u00e1fico": {
+            "account_number": "413562",
+            "account_type": "Income Account"
+          },
+          "Venta de equipo \u00f3ptico y de precisi\u00f3n": {
+            "account_number": "413564",
+            "account_type": "Income Account"
+          },
+          "Venta de empaques": {
+            "account_number": "413566",
+            "account_type": "Income Account"
+          },
+          "Venta de equipo profesional y cient\u00edfico": {
+            "account_number": "413568",
+            "account_type": "Income Account"
+          },
+          "Venta de loter\u00edas, rifas, chance, apuestas y similares": {
+            "account_number": "413570",
+            "account_type": "Income Account"
+          },
+          "Reparaci\u00f3n de efectos personales y electrodom\u00e9sticos": {
+            "account_number": "413572",
+            "account_type": "Income Account"
+          },
+          "Venta de otros productos": {
+            "account_number": "413595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "413599",
+            "account_type": "Income Account"
+          }
+        },
+        "Hoteles y restaurantes": {
+          "account_number": "4140",
+          "account_type": "Income Account",
+          "Hoteler\u00eda": {
+            "account_number": "414005",
+            "account_type": "Income Account"
+          },
+          "Campamento y otros tipos de hospedaje": {
+            "account_number": "414010",
+            "account_type": "Income Account"
+          },
+          "Restaurantes": {
+            "account_number": "414015",
+            "account_type": "Income Account"
+          },
+          "Bares y cantinas": {
+            "account_number": "414020",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "414095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "414099",
+            "account_type": "Income Account"
+          }
+        },
+        "Transporte, almacenamiento y comunicaciones": {
+          "account_number": "4145",
+          "account_type": "Income Account",
+          "Servicio de transporte por carretera": {
+            "account_number": "414505",
+            "account_type": "Income Account"
+          },
+          "Servicio de transporte por v\u00eda f\u00e9rrea": {
+            "account_number": "414510",
+            "account_type": "Income Account"
+          },
+          "Servicio de transporte por v\u00eda acu\u00e1tica": {
+            "account_number": "414515",
+            "account_type": "Income Account"
+          },
+          "Servicio de transporte por v\u00eda a\u00e9rea": {
+            "account_number": "414520",
+            "account_type": "Income Account"
+          },
+          "Servicio de transporte por tuber\u00edas": {
+            "account_number": "414525",
+            "account_type": "Income Account"
+          },
+          "Manipulaci\u00f3n de carga": {
+            "account_number": "414530",
+            "account_type": "Income Account"
+          },
+          "Almacenamiento y dep\u00f3sito": {
+            "account_number": "414535",
+            "account_type": "Income Account"
+          },
+          "Servicios complementarios para el transporte": {
+            "account_number": "414540",
+            "account_type": "Income Account"
+          },
+          "Agencias de viaje": {
+            "account_number": "414545",
+            "account_type": "Income Account"
+          },
+          "Otras agencias de transporte": {
+            "account_number": "414550",
+            "account_type": "Income Account"
+          },
+          "Servicio postal y de correo": {
+            "account_number": "414555",
+            "account_type": "Income Account"
+          },
+          "Servicio telef\u00f3nico": {
+            "account_number": "414560",
+            "account_type": "Income Account"
+          },
+          "Servicio de tel\u00e9grafo": {
+            "account_number": "414565",
+            "account_type": "Income Account"
+          },
+          "Servicio de transmisi\u00f3n de datos": {
+            "account_number": "414570",
+            "account_type": "Income Account"
+          },
+          "Servicio de radio y televisi\u00f3n por cable": {
+            "account_number": "414575",
+            "account_type": "Income Account"
+          },
+          "Transmisi\u00f3n de sonido e im\u00e1genes por contrato": {
+            "account_number": "414580",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "414595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "414599",
+            "account_type": "Income Account"
+          }
+        },
+        "Actividad financiera": {
+          "account_number": "4150",
+          "account_type": "Income Account",
+          "Venta de inversiones": {
+            "account_number": "415005",
+            "account_type": "Income Account"
+          },
+          "Dividendos de sociedades an\u00f3nimas y/o asimiladas": {
+            "account_number": "415010",
+            "account_type": "Income Account"
+          },
+          "Participaciones de sociedades limitadas y/o asimiladas": {
+            "account_number": "415015",
+            "account_type": "Income Account"
+          },
+          "Intereses": {
+            "account_number": "415020",
+            "account_type": "Income Account"
+          },
+          "Reajuste monetario-UPAC (hoy UVR)": {
+            "account_number": "415025",
+            "account_type": "Income Account"
+          },
+          "Comisiones": {
+            "account_number": "415030",
+            "account_type": "Income Account"
+          },
+          "Operaciones de descuento": {
+            "account_number": "415035",
+            "account_type": "Income Account"
+          },
+          "Cuotas de inscripci\u00f3n-consorcios": {
+            "account_number": "415040",
+            "account_type": "Income Account"
+          },
+          "Cuotas de administraci\u00f3n-consorcios": {
+            "account_number": "415045",
+            "account_type": "Income Account"
+          },
+          "Reajuste del sistema-consorcios": {
+            "account_number": "415050",
+            "account_type": "Income Account"
+          },
+          "Eliminaci\u00f3n de suscriptores-consorcios": {
+            "account_number": "415055",
+            "account_type": "Income Account"
+          },
+          "Cuotas de ingreso o retiro-sociedad administradora": {
+            "account_number": "415060",
+            "account_type": "Income Account"
+          },
+          "Servicios a comisionistas": {
+            "account_number": "415065",
+            "account_type": "Income Account"
+          },
+          "Inscripciones y cuotas": {
+            "account_number": "415070",
+            "account_type": "Income Account"
+          },
+          "Recuperaci\u00f3n de garant\u00edas": {
+            "account_number": "415075",
+            "account_type": "Income Account"
+          },
+          "Ingresos m\u00e9todo de participaci\u00f3n": {
+            "account_number": "415080",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "415095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "415099",
+            "account_type": "Income Account"
+          }
+        },
+        "Actividades inmobiliarias, empresariales y de alquiler": {
+          "account_number": "4155",
+          "account_type": "Income Account",
+          "Arrendamientos de bienes inmuebles": {
+            "account_number": "415505",
+            "account_type": "Income Account"
+          },
+          "Inmobiliarias por retribuci\u00f3n o contrata": {
+            "account_number": "415510",
+            "account_type": "Income Account"
+          },
+          "Alquiler equipo de transporte": {
+            "account_number": "415515",
+            "account_type": "Income Account"
+          },
+          "Alquiler maquinaria y equipo": {
+            "account_number": "415520",
+            "account_type": "Income Account"
+          },
+          "Alquiler de efectos personales y enseres dom\u00e9sticos": {
+            "account_number": "415525",
+            "account_type": "Income Account"
+          },
+          "Consultor\u00eda en equipo y programas de inform\u00e1tica": {
+            "account_number": "415530",
+            "account_type": "Income Account"
+          },
+          "Procesamiento de datos": {
+            "account_number": "415535",
+            "account_type": "Income Account"
+          },
+          "Mantenimiento y reparaci\u00f3n de maquinaria de oficina": {
+            "account_number": "415540",
+            "account_type": "Income Account"
+          },
+          "Investigaciones cient\u00edficas y de desarrollo": {
+            "account_number": "415545",
+            "account_type": "Income Account"
+          },
+          "Actividades empresariales de consultor\u00eda": {
+            "account_number": "415550",
+            "account_type": "Income Account"
+          },
+          "Publicidad": {
+            "account_number": "415555",
+            "account_type": "Income Account"
+          },
+          "Dotaci\u00f3n de personal": {
+            "account_number": "415560",
+            "account_type": "Income Account"
+          },
+          "Investigaci\u00f3n y seguridad": {
+            "account_number": "415565",
+            "account_type": "Income Account"
+          },
+          "Limpieza de inmuebles": {
+            "account_number": "415570",
+            "account_type": "Income Account"
+          },
+          "Fotograf\u00eda": {
+            "account_number": "415575",
+            "account_type": "Income Account"
+          },
+          "Envase y empaque": {
+            "account_number": "415580",
+            "account_type": "Income Account"
+          },
+          "Fotocopiado": {
+            "account_number": "415585",
+            "account_type": "Income Account"
+          },
+          "Mantenimiento y reparaci\u00f3n de maquinaria y equipo": {
+            "account_number": "415590",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "415595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "415599",
+            "account_type": "Income Account"
+          }
+        },
+        "Ense\u00f1anza": {
+          "account_number": "4160",
+          "account_type": "Income Account",
+          "Actividades relacionadas con la educaci\u00f3n": {
+            "account_number": "416005",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "416095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "416099",
+            "account_type": "Income Account"
+          }
+        },
+        "Servicios sociales y de salud": {
+          "account_number": "4165",
+          "account_type": "Income Account",
+          "Servicio hospitalario": {
+            "account_number": "416505",
+            "account_type": "Income Account"
+          },
+          "Servicio m\u00e9dico": {
+            "account_number": "416510",
+            "account_type": "Income Account"
+          },
+          "Servicio odontol\u00f3gico": {
+            "account_number": "416515",
+            "account_type": "Income Account"
+          },
+          "Servicio de laboratorio": {
+            "account_number": "416520",
+            "account_type": "Income Account"
+          },
+          "Actividades veterinarias": {
+            "account_number": "416525",
+            "account_type": "Income Account"
+          },
+          "Actividades de servicios sociales": {
+            "account_number": "416530",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "416595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "416599",
+            "account_type": "Income Account"
+          }
+        },
+        "Otras actividades de servicios comunitarios, sociales y personales": {
+          "account_number": "4170",
+          "account_type": "Income Account",
+          "Eliminaci\u00f3n de desperdicios y aguas residuales": {
+            "account_number": "417005",
+            "account_type": "Income Account"
+          },
+          "Actividades de asociaci\u00f3n": {
+            "account_number": "417010",
+            "account_type": "Income Account"
+          },
+          "Producci\u00f3n y distribuci\u00f3n de filmes y videocintas": {
+            "account_number": "417015",
+            "account_type": "Income Account"
+          },
+          "Exhibici\u00f3n de filmes y videocintas": {
+            "account_number": "417020",
+            "account_type": "Income Account"
+          },
+          "Actividad de radio y televisi\u00f3n": {
+            "account_number": "417025",
+            "account_type": "Income Account"
+          },
+          "Actividad teatral, musical y art\u00edstica": {
+            "account_number": "417030",
+            "account_type": "Income Account"
+          },
+          "Grabaci\u00f3n y producci\u00f3n de discos": {
+            "account_number": "417035",
+            "account_type": "Income Account"
+          },
+          "Entretenimiento y esparcimiento": {
+            "account_number": "417040",
+            "account_type": "Income Account"
+          },
+          "Agencias de noticias": {
+            "account_number": "417045",
+            "account_type": "Income Account"
+          },
+          "Lavander\u00edas y similares": {
+            "account_number": "417050",
+            "account_type": "Income Account"
+          },
+          "Peluquer\u00edas y similares": {
+            "account_number": "417055",
+            "account_type": "Income Account"
+          },
+          "Servicios funerarios": {
+            "account_number": "417060",
+            "account_type": "Income Account"
+          },
+          "Zonas francas": {
+            "account_number": "417065",
+            "account_type": "Income Account"
+          },
+          "Actividades conexas": {
+            "account_number": "417095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "417099",
+            "account_type": "Income Account"
+          }
+        },
+        "Devoluciones  en ventas (DB)": {
+          "account_number": "4175",
+          "account_type": "Income Account",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "417599",
+            "account_type": "Income Account"
+          }
+        }
+      },
+      "No operacionales": {
+        "account_number": "42",
+        "account_type": "Income Account",
+        "Otras ventas": {
+          "account_number": "4205",
+          "account_type": "Income Account",
+          "Materia prima": {
+            "account_number": "420505",
+            "account_type": "Income Account"
+          },
+          "Material de desecho": {
+            "account_number": "420510",
+            "account_type": "Income Account"
+          },
+          "Materiales varios": {
+            "account_number": "420515",
+            "account_type": "Income Account"
+          },
+          "Productos de diversificaci\u00f3n": {
+            "account_number": "420520",
+            "account_type": "Income Account"
+          },
+          "Excedentes de exportaci\u00f3n": {
+            "account_number": "420525",
+            "account_type": "Income Account"
+          },
+          "Envases y empaques": {
+            "account_number": "420530",
+            "account_type": "Income Account"
+          },
+          "Productos agr\u00edcolas": {
+            "account_number": "420535",
+            "account_type": "Income Account"
+          },
+          "De propaganda": {
+            "account_number": "420540",
+            "account_type": "Income Account"
+          },
+          "Productos en remate": {
+            "account_number": "420545",
+            "account_type": "Income Account"
+          },
+          "Combustibles y lubricantes": {
+            "account_number": "420550",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "420599",
+            "account_type": "Income Account"
+          }
+        },
+        "Financieros": {
+          "account_number": "4210",
+          "account_type": "Income Account",
+          "Intereses": {
+            "account_number": "421005",
+            "account_type": "Income Account"
+          },
+          "Reajuste monetario-UPAC (hoy UVR)": {
+            "account_number": "421010",
+            "account_type": "Income Account"
+          },
+          "Descuentos amortizados": {
+            "account_number": "421015",
+            "account_type": "Income Account"
+          },
+          "Diferencia en cambio": {
+            "account_number": "421020",
+            "account_type": "Income Account"
+          },
+          "Financiaci\u00f3n veh\u00edculos": {
+            "account_number": "421025",
+            "account_type": "Income Account"
+          },
+          "Financiaci\u00f3n sistemas de viajes": {
+            "account_number": "421030",
+            "account_type": "Income Account"
+          },
+          "Aceptaciones bancarias": {
+            "account_number": "421035",
+            "account_type": "Income Account"
+          },
+          "Descuentos comerciales condicionados": {
+            "account_number": "421040",
+            "account_type": "Income Account"
+          },
+          "Descuentos bancarios": {
+            "account_number": "421045",
+            "account_type": "Income Account"
+          },
+          "Comisiones cheques de otras plazas": {
+            "account_number": "421050",
+            "account_type": "Income Account"
+          },
+          "Multas y recargos": {
+            "account_number": "421055",
+            "account_type": "Income Account"
+          },
+          "Sanciones cheques devueltos": {
+            "account_number": "421060",
+            "account_type": "Income Account"
+          },
+          "Otros": {
+            "account_number": "421095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "421099",
+            "account_type": "Income Account"
+          }
+        },
+        "Dividendos y participaciones": {
+          "account_number": "4215",
+          "account_type": "Income Account",
+          "De sociedades an\u00f3nimas y/o asimiladas": {
+            "account_number": "421505",
+            "account_type": "Income Account"
+          },
+          "De sociedades limitadas y/o asimiladas": {
+            "account_number": "421510",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "421599",
+            "account_type": "Income Account"
+          }
+        },
+        "Ingresos m\u00e9todo de participaci\u00f3n": {
+          "account_number": "4218",
+          "account_type": "Income Account",
+          "De sociedades an\u00f3nimas y/o asimiladas": {
+            "account_number": "421805",
+            "account_type": "Income Account"
+          },
+          "De sociedades limitadas y/o asimiladas": {
+            "account_number": "421810",
+            "account_type": "Income Account"
+          }
+        },
+        "Arrendamientos": {
+          "account_number": "4220",
+          "account_type": "Income Account",
+          "Terrenos": {
+            "account_number": "422005",
+            "account_type": "Income Account"
+          },
+          "Construcciones y edificios": {
+            "account_number": "422010",
+            "account_type": "Income Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "422015",
+            "account_type": "Income Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "422020",
+            "account_type": "Income Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "422025",
+            "account_type": "Income Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "422030",
+            "account_type": "Income Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "422035",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "422040",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "422045",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "422050",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "422055",
+            "account_type": "Income Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "422060",
+            "account_type": "Income Account"
+          },
+          "Envases y empaques": {
+            "account_number": "422062",
+            "account_type": "Income Account"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "422065",
+            "account_type": "Income Account"
+          },
+          "Aer\u00f3dromos": {
+            "account_number": "422070",
+            "account_type": "Income Account"
+          },
+          "Semovientes": {
+            "account_number": "422075",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "422099",
+            "account_type": "Income Account"
+          }
+        },
+        "Comisiones": {
+          "account_number": "4225",
+          "account_type": "Income Account",
+          "Sobre inversiones": {
+            "account_number": "422505",
+            "account_type": "Income Account"
+          },
+          "De concesionarios": {
+            "account_number": "422510",
+            "account_type": "Income Account"
+          },
+          "De actividades financieras": {
+            "account_number": "422515",
+            "account_type": "Income Account"
+          },
+          "Por venta de servicios de taller": {
+            "account_number": "422520",
+            "account_type": "Income Account"
+          },
+          "Por venta de seguros": {
+            "account_number": "422525",
+            "account_type": "Income Account"
+          },
+          "Por ingresos para terceros": {
+            "account_number": "422530",
+            "account_type": "Income Account"
+          },
+          "Por distribuci\u00f3n de pel\u00edculas": {
+            "account_number": "422535",
+            "account_type": "Income Account"
+          },
+          "Derechos de autor": {
+            "account_number": "422540",
+            "account_type": "Income Account"
+          },
+          "Derechos de programaci\u00f3n": {
+            "account_number": "422545",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "422599",
+            "account_type": "Income Account"
+          }
+        },
+        "Honorarios": {
+          "account_number": "4230",
+          "account_type": "Income Account",
+          "Asesor\u00edas": {
+            "account_number": "423005",
+            "account_type": "Income Account"
+          },
+          "Asistencia t\u00e9cnica": {
+            "account_number": "423010",
+            "account_type": "Income Account"
+          },
+          "Administraci\u00f3n de vinculadas": {
+            "account_number": "423015",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "423099",
+            "account_type": "Income Account"
+          }
+        },
+        "Servicios": {
+          "account_number": "4235",
+          "account_type": "Income Account",
+          "De b\u00e1scula": {
+            "account_number": "423505",
+            "account_type": "Income Account"
+          },
+          "De transporte": {
+            "account_number": "423510",
+            "account_type": "Income Account"
+          },
+          "De prensa": {
+            "account_number": "423515",
+            "account_type": "Income Account"
+          },
+          "Administrativos": {
+            "account_number": "423520",
+            "account_type": "Income Account"
+          },
+          "T\u00e9cnicos": {
+            "account_number": "423525",
+            "account_type": "Income Account"
+          },
+          "De computaci\u00f3n": {
+            "account_number": "423530",
+            "account_type": "Income Account"
+          },
+          "De telefax": {
+            "account_number": "423535",
+            "account_type": "Income Account"
+          },
+          "Taller de veh\u00edculos": {
+            "account_number": "423540",
+            "account_type": "Income Account"
+          },
+          "De recepci\u00f3n de aeronaves": {
+            "account_number": "423545",
+            "account_type": "Income Account"
+          },
+          "De transporte programa gas natural": {
+            "account_number": "423550",
+            "account_type": "Income Account"
+          },
+          "Por contratos": {
+            "account_number": "423555",
+            "account_type": "Income Account"
+          },
+          "De trilla": {
+            "account_number": "423560",
+            "account_type": "Income Account"
+          },
+          "De mantenimiento": {
+            "account_number": "423565",
+            "account_type": "Income Account"
+          },
+          "Al personal": {
+            "account_number": "423570",
+            "account_type": "Income Account"
+          },
+          "De casino": {
+            "account_number": "423575",
+            "account_type": "Income Account"
+          },
+          "Fletes": {
+            "account_number": "423580",
+            "account_type": "Income Account"
+          },
+          "Entre compa\u00f1\u00edas": {
+            "account_number": "423585",
+            "account_type": "Income Account"
+          },
+          "Otros": {
+            "account_number": "423595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "423599",
+            "account_type": "Income Account"
+          }
+        },
+        "Utilidad en venta de inversiones": {
+          "account_number": "4240",
+          "account_type": "Income Account",
+          "Acciones": {
+            "account_number": "424005",
+            "account_type": "Income Account"
+          },
+          "Cuotas o partes de inter\u00e9s social": {
+            "account_number": "424010",
+            "account_type": "Income Account"
+          },
+          "Bonos": {
+            "account_number": "424015",
+            "account_type": "Income Account"
+          },
+          "C\u00e9dulas": {
+            "account_number": "424020",
+            "account_type": "Income Account"
+          },
+          "Certificados": {
+            "account_number": "424025",
+            "account_type": "Income Account"
+          },
+          "Papeles comerciales": {
+            "account_number": "424030",
+            "account_type": "Income Account"
+          },
+          "T\u00edtulos": {
+            "account_number": "424035",
+            "account_type": "Income Account"
+          },
+          "Derechos fiduciarios": {
+            "account_number": "424045",
+            "account_type": "Income Account"
+          },
+          "Obligatorias": {
+            "account_number": "424050",
+            "account_type": "Income Account"
+          },
+          "Otras": {
+            "account_number": "424095",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "424099",
+            "account_type": "Income Account"
+          }
+        },
+        "Utilidad en venta de propiedades, planta y equipo": {
+          "account_number": "4245",
+          "account_type": "Income Account",
+          "Terrenos": {
+            "account_number": "424504",
+            "account_type": "Income Account"
+          },
+          "Materiales industria petrolera": {
+            "account_number": "424506",
+            "account_type": "Income Account"
+          },
+          "Construcciones en curso": {
+            "account_number": "424508",
+            "account_type": "Income Account"
+          },
+          "Maquinaria en montaje": {
+            "account_number": "424512",
+            "account_type": "Income Account"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "424516",
+            "account_type": "Income Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "424520",
+            "account_type": "Income Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "424524",
+            "account_type": "Income Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "424528",
+            "account_type": "Income Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "424532",
+            "account_type": "Income Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "424536",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "424540",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "424544",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "424548",
+            "account_type": "Income Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "424552",
+            "account_type": "Income Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "424556",
+            "account_type": "Income Account"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "424560",
+            "account_type": "Income Account"
+          },
+          "Envases y empaques": {
+            "account_number": "424562",
+            "account_type": "Income Account"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "424564",
+            "account_type": "Income Account"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "424568",
+            "account_type": "Income Account"
+          },
+          "Minas y Canteras": {
+            "account_number": "424572",
+            "account_type": "Income Account"
+          },
+          "Pozos artesianos": {
+            "account_number": "424580",
+            "account_type": "Income Account"
+          },
+          "Yacimientos": {
+            "account_number": "424584",
+            "account_type": "Income Account"
+          },
+          "Semovientes": {
+            "account_number": "424588",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "424599",
+            "account_type": "Income Account"
+          }
+        },
+        "Utilidad en venta de otros bienes": {
+          "account_number": "4248",
+          "account_type": "Income Account",
+          "Intangibles": {
+            "account_number": "424805",
+            "account_type": "Income Account"
+          },
+          "Otros activos": {
+            "account_number": "424810",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "424899",
+            "account_type": "Income Account"
+          }
+        },
+        "Recuperaciones": {
+          "account_number": "4250",
+          "account_type": "Income Account",
+          "Deudas malas": {
+            "account_number": "425005",
+            "account_type": "Income Account"
+          },
+          "Seguros": {
+            "account_number": "425010",
+            "account_type": "Income Account"
+          },
+          "Reclamos": {
+            "account_number": "425015",
+            "account_type": "Income Account"
+          },
+          "Reintegro por personal en comisi\u00f3n": {
+            "account_number": "425020",
+            "account_type": "Income Account"
+          },
+          "Reintegro garant\u00edas": {
+            "account_number": "425025",
+            "account_type": "Income Account"
+          },
+          "Descuentos concedidos": {
+            "account_number": "425030",
+            "account_type": "Income Account"
+          },
+          "De  provisiones": {
+            "account_number": "425035",
+            "account_type": "Income Account"
+          },
+          "Gastos bancarios": {
+            "account_number": "425040",
+            "account_type": "Income Account"
+          },
+          "De depreciaci\u00f3n": {
+            "account_number": "425045",
+            "account_type": "Income Account"
+          },
+          "Reintegro de otros costos y gastos": {
+            "account_number": "425050",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "425099",
+            "account_type": "Income Account"
+          }
+        },
+        "Indemnizaciones": {
+          "account_number": "4255",
+          "account_type": "Income Account",
+          "Por siniestro": {
+            "account_number": "425505",
+            "account_type": "Income Account"
+          },
+          "Por suministros": {
+            "account_number": "425510",
+            "account_type": "Income Account"
+          },
+          "Lucro cesante compa\u00f1\u00edas de seguros": {
+            "account_number": "425515",
+            "account_type": "Income Account"
+          },
+          "Da\u00f1o emergente compa\u00f1\u00edas de seguros": {
+            "account_number": "425520",
+            "account_type": "Income Account"
+          },
+          "Por p\u00e9rdida de mercanc\u00eda": {
+            "account_number": "425525",
+            "account_type": "Income Account"
+          },
+          "Por incumplimiento de contratos": {
+            "account_number": "425530",
+            "account_type": "Income Account"
+          },
+          "De terceros": {
+            "account_number": "425535",
+            "account_type": "Income Account"
+          },
+          "Por incapacidades ISS": {
+            "account_number": "425540",
+            "account_type": "Income Account"
+          },
+          "Otras": {
+            "account_number": "425595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "425599",
+            "account_type": "Income Account"
+          }
+        },
+        "Participaciones en concesiones": {
+          "account_number": "4260",
+          "account_type": "Income Account",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "426099",
+            "account_type": "Income Account"
+          }
+        },
+        "Ingresos de ejercicios anteriores": {
+          "account_number": "4265",
+          "account_type": "Income Account",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "426599",
+            "account_type": "Income Account"
+          }
+        },
+        "Devoluciones en otras ventas (DB)": {
+          "account_number": "4275",
+          "account_type": "Income Account",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "427599",
+            "account_type": "Income Account"
+          }
+        },
+        "Diversos": {
+          "account_number": "4295",
+          "account_type": "Income Account",
+          "CERT": {
+            "account_number": "429503",
+            "account_type": "Income Account"
+          },
+          "Aprovechamientos": {
+            "account_number": "429505",
+            "account_type": "Income Account"
+          },
+          "Auxilios": {
+            "account_number": "429507",
+            "account_type": "Income Account"
+          },
+          "Subvenciones": {
+            "account_number": "429509",
+            "account_type": "Income Account"
+          },
+          "Ingresos por investigaci\u00f3n y desarrollo": {
+            "account_number": "429511",
+            "account_type": "Income Account"
+          },
+          "Por trabajos ejecutados": {
+            "account_number": "429513",
+            "account_type": "Income Account"
+          },
+          "Regal\u00edas": {
+            "account_number": "429515",
+            "account_type": "Income Account"
+          },
+          "Derivados de las exportaciones": {
+            "account_number": "429517",
+            "account_type": "Income Account"
+          },
+          "Otros ingresos de explotaci\u00f3n": {
+            "account_number": "429519",
+            "account_type": "Income Account"
+          },
+          "De la actividad ganadera": {
+            "account_number": "429521",
+            "account_type": "Income Account"
+          },
+          "Derechos y licitaciones": {
+            "account_number": "429525",
+            "account_type": "Income Account"
+          },
+          "Ingresos por elementos perdidos": {
+            "account_number": "429530",
+            "account_type": "Income Account"
+          },
+          "Multas y recargos": {
+            "account_number": "429533",
+            "account_type": "Income Account"
+          },
+          "Preavisos descontados": {
+            "account_number": "429535",
+            "account_type": "Income Account"
+          },
+          "Reclamos": {
+            "account_number": "429537",
+            "account_type": "Income Account"
+          },
+          "Recobro de da\u00f1os": {
+            "account_number": "429540",
+            "account_type": "Income Account"
+          },
+          "Premios": {
+            "account_number": "429543",
+            "account_type": "Income Account"
+          },
+          "Bonificaciones": {
+            "account_number": "429545",
+            "account_type": "Income Account"
+          },
+          "Productos descontados": {
+            "account_number": "429547",
+            "account_type": "Income Account"
+          },
+          "Reconocimientos ISS": {
+            "account_number": "429549",
+            "account_type": "Income Account"
+          },
+          "Excedentes": {
+            "account_number": "429551",
+            "account_type": "Income Account"
+          },
+          "Sobrantes de caja": {
+            "account_number": "429553",
+            "account_type": "Income Account"
+          },
+          "Sobrantes en liquidaci\u00f3n fletes": {
+            "account_number": "429555",
+            "account_type": "Income Account"
+          },
+          "Subsidios estatales": {
+            "account_number": "429557",
+            "account_type": "Income Account"
+          },
+          "Capacitaci\u00f3n distribuidores": {
+            "account_number": "429559",
+            "account_type": "Income Account"
+          },
+          "De escrituraci\u00f3n": {
+            "account_number": "429561",
+            "account_type": "Income Account"
+          },
+          "Registro promesas de venta": {
+            "account_number": "429563",
+            "account_type": "Income Account"
+          },
+          "\u00datiles, papeler\u00eda y fotocopias": {
+            "account_number": "429567",
+            "account_type": "Income Account"
+          },
+          "Resultados, matr\u00edculas y traspasos": {
+            "account_number": "429571",
+            "account_type": "Income Account"
+          },
+          "Decoraciones": {
+            "account_number": "429573",
+            "account_type": "Income Account"
+          },
+          "Manejo de carga": {
+            "account_number": "429575",
+            "account_type": "Income Account"
+          },
+          "Historia cl\u00ednica": {
+            "account_number": "429579",
+            "account_type": "Income Account"
+          },
+          "Ajuste al peso": {
+            "account_number": "429581",
+            "account_type": "Income Account"
+          },
+          "Llamadas telef\u00f3nicas": {
+            "account_number": "429583",
+            "account_type": "Income Account"
+          },
+          "Otros": {
+            "account_number": "429595",
+            "account_type": "Income Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "429599",
+            "account_type": "Income Account"
+          }
+        }
+      },
+      "Ajustes por inflaci\u00f3n": {
+        "account_number": "47",
+        "account_type": "Income Account",
+        "Correcci\u00f3n monetaria": {
+          "account_number": "4705",
+          "account_type": "Income Account",
+          "Inversiones (CR)": {
+            "account_number": "470505",
+            "account_type": "Income Account"
+          },
+          "Inventarios (CR)": {
+            "account_number": "470510",
+            "account_type": "Income Account"
+          },
+          "Propiedades, planta y equipo (CR)": {
+            "account_number": "470515",
+            "account_type": "Income Account"
+          },
+          "Intangibles (CR)": {
+            "account_number": "470520",
+            "account_type": "Income Account"
+          },
+          "Activos diferidos": {
+            "account_number": "470525",
+            "account_type": "Income Account"
+          },
+          "Otros activos (CR)": {
+            "account_number": "470530",
+            "account_type": "Income Account"
+          },
+          "Pasivos sujetos de ajuste": {
+            "account_number": "470535",
+            "account_type": "Income Account"
+          },
+          "Patrimonio": {
+            "account_number": "470540",
+            "account_type": "Income Account"
+          },
+          "Depreciaci\u00f3n acumulada (DB)": {
+            "account_number": "470545",
+            "account_type": "Income Account"
+          },
+          "Depreciaci\u00f3n diferida (CR)": {
+            "account_number": "470550",
+            "account_type": "Income Account"
+          },
+          "Agotamiento acumulado (DB)": {
+            "account_number": "470555",
+            "account_type": "Income Account"
+          },
+          "Amortizaci\u00f3n acumulada (DB)": {
+            "account_number": "470560",
+            "account_type": "Income Account"
+          },
+          "Ingresos operacionales  (DB)": {
+            "account_number": "470565",
+            "account_type": "Income Account"
+          },
+          "Devoluciones en ventas (CR)": {
+            "account_number": "470568",
+            "account_type": "Income Account"
+          },
+          "Ingresos no operacionales (DB)": {
+            "account_number": "470570",
+            "account_type": "Income Account"
+          },
+          "Gastos operacionales de administraci\u00f3n (CR)": {
+            "account_number": "470575",
+            "account_type": "Income Account"
+          },
+          "Gastos operacionales de ventas (CR)": {
+            "account_number": "470580",
+            "account_type": "Income Account"
+          },
+          "Gastos no operacionales (CR)": {
+            "account_number": "470585",
+            "account_type": "Income Account"
+          },
+          "Compras (CR)": {
+            "account_number": "470590",
+            "account_type": "Income Account"
+          },
+          "Devoluciones en compras (DB)": {
+            "account_number": "470591",
+            "account_type": "Income Account"
+          },
+          "Costo de ventas (CR)": {
+            "account_number": "470592",
+            "account_type": "Income Account"
+          },
+          "Costos de producci\u00f3n o de operaci\u00f3n (CR)": {
+            "account_number": "470594",
+            "account_type": "Income Account"
+          }
+        }
+      }
+    },
+    "Gastos": {
+      "account_number": "5",
+      "account_type": "Expense Account",
+      "root_type": "Expense",
+      "Operacionales de administraci\u00f3n": {
+        "account_number": "51",
+        "account_type": "Expense Account",
+        "Gastos de personal": {
+          "account_number": "5105",
+          "account_type": "Expense Account",
+          "Salario integral": {
+            "account_number": "510503",
+            "account_type": "Expense Account"
+          },
+          "Sueldos": {
+            "account_number": "510506",
+            "account_type": "Expense Account"
+          },
+          "Jornales": {
+            "account_number": "510512",
+            "account_type": "Expense Account"
+          },
+          "Horas extras y recargos": {
+            "account_number": "510515",
+            "account_type": "Expense Account"
+          },
+          "Comisiones": {
+            "account_number": "510518",
+            "account_type": "Expense Account"
+          },
+          "Vi\u00e1ticos": {
+            "account_number": "510521",
+            "account_type": "Expense Account"
+          },
+          "Incapacidades": {
+            "account_number": "510524",
+            "account_type": "Expense Account"
+          },
+          "Auxilio de transporte": {
+            "account_number": "510527",
+            "account_type": "Expense Account"
+          },
+          "Cesant\u00edas": {
+            "account_number": "510530",
+            "account_type": "Expense Account"
+          },
+          "Intereses sobre cesant\u00edas": {
+            "account_number": "510533",
+            "account_type": "Expense Account"
+          },
+          "Prima de servicios": {
+            "account_number": "510536",
+            "account_type": "Expense Account"
+          },
+          "Vacaciones": {
+            "account_number": "510539",
+            "account_type": "Expense Account"
+          },
+          "Primas extralegales": {
+            "account_number": "510542",
+            "account_type": "Expense Account"
+          },
+          "Auxilios": {
+            "account_number": "510545",
+            "account_type": "Expense Account"
+          },
+          "Bonificaciones": {
+            "account_number": "510548",
+            "account_type": "Expense Account"
+          },
+          "Dotaci\u00f3n y suministro a trabajadores": {
+            "account_number": "510551",
+            "account_type": "Expense Account"
+          },
+          "Seguros": {
+            "account_number": "510554",
+            "account_type": "Expense Account"
+          },
+          "Cuotas partes pensiones de jubilaci\u00f3n": {
+            "account_number": "510557",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n c\u00e1lculo actuarial pensiones de jubilaci\u00f3n": {
+            "account_number": "510558",
+            "account_type": "Expense Account"
+          },
+          "Pensiones de jubilaci\u00f3n": {
+            "account_number": "510559",
+            "account_type": "Expense Account"
+          },
+          "Indemnizaciones laborales": {
+            "account_number": "510560",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n bonos pensionales": {
+            "account_number": "510561",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n t\u00edtulos pensionales": {
+            "account_number": "510562",
+            "account_type": "Expense Account"
+          },
+          "Capacitaci\u00f3n al personal": {
+            "account_number": "510563",
+            "account_type": "Expense Account"
+          },
+          "Gastos deportivos y de recreaci\u00f3n": {
+            "account_number": "510566",
+            "account_type": "Expense Account"
+          },
+          "Aportes a administradoras de riesgos profesionales, ARP": {
+            "account_number": "510568",
+            "account_type": "Expense Account"
+          },
+          "Aportes a entidades promotoras de salud, EPS": {
+            "account_number": "510569",
+            "account_type": "Expense Account"
+          },
+          "Aportes a fondos de pensiones y/o cesant\u00edas": {
+            "account_number": "510570",
+            "account_type": "Expense Account"
+          },
+          "Aportes cajas de compensaci\u00f3n familiar": {
+            "account_number": "510572",
+            "account_type": "Expense Account"
+          },
+          "Aportes ICBF": {
+            "account_number": "510575",
+            "account_type": "Expense Account"
+          },
+          "SENA": {
+            "account_number": "510578",
+            "account_type": "Expense Account"
+          },
+          "Aportes sindicales": {
+            "account_number": "510581",
+            "account_type": "Expense Account"
+          },
+          "Gastos m\u00e9dicos y drogas": {
+            "account_number": "510584",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "510595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "510599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Honorarios": {
+          "account_number": "5110",
+          "account_type": "Expense Account",
+          "Junta directiva": {
+            "account_number": "511005",
+            "account_type": "Expense Account"
+          },
+          "Revisor\u00eda fiscal": {
+            "account_number": "511010",
+            "account_type": "Expense Account"
+          },
+          "Auditor\u00eda externa": {
+            "account_number": "511015",
+            "account_type": "Expense Account"
+          },
+          "Aval\u00faos": {
+            "account_number": "511020",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda jur\u00eddica": {
+            "account_number": "511025",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda financiera": {
+            "account_number": "511030",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda t\u00e9cnica": {
+            "account_number": "511035",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "511095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "511099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Impuestos": {
+          "account_number": "5115",
+          "account_type": "Expense Account",
+          "Industria y comercio": {
+            "account_number": "511505",
+            "account_type": "Expense Account"
+          },
+          "De timbres": {
+            "account_number": "511510",
+            "account_type": "Expense Account"
+          },
+          "A la propiedad ra\u00edz": {
+            "account_number": "511515",
+            "account_type": "Expense Account"
+          },
+          "Derechos sobre instrumentos p\u00fablicos": {
+            "account_number": "511520",
+            "account_type": "Expense Account"
+          },
+          "De valorizaci\u00f3n": {
+            "account_number": "511525",
+            "account_type": "Expense Account"
+          },
+          "De turismo": {
+            "account_number": "511530",
+            "account_type": "Expense Account"
+          },
+          "Tasa por utilizaci\u00f3n de puertos": {
+            "account_number": "511535",
+            "account_type": "Expense Account"
+          },
+          "De veh\u00edculos": {
+            "account_number": "511540",
+            "account_type": "Expense Account"
+          },
+          "De espect\u00e1culos p\u00fablicos": {
+            "account_number": "511545",
+            "account_type": "Expense Account"
+          },
+          "Cuotas de fomento": {
+            "account_number": "511550",
+            "account_type": "Expense Account"
+          },
+          "IVA descontable": {
+            "account_number": "511570",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "511595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "511599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Arrendamientos": {
+          "account_number": "5120",
+          "account_type": "Expense Account",
+          "Terrenos": {
+            "account_number": "512005",
+            "account_type": "Expense Account"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "512010",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "512015",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "512020",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "512025",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "512030",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "512035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "512040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "512045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "512050",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "512055",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "512060",
+            "account_type": "Expense Account"
+          },
+          "Aer\u00f3dromos": {
+            "account_number": "512065",
+            "account_type": "Expense Account"
+          },
+          "Semovientes": {
+            "account_number": "512070",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "512095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "512099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Contribuciones y afiliaciones": {
+          "account_number": "5125",
+          "account_type": "Expense Account",
+          "Contribuciones": {
+            "account_number": "512505",
+            "account_type": "Expense Account"
+          },
+          "Afiliaciones y sostenimiento": {
+            "account_number": "512510",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "512599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Seguros": {
+          "account_number": "5130",
+          "account_type": "Expense Account",
+          "Manejo": {
+            "account_number": "513005",
+            "account_type": "Expense Account"
+          },
+          "Cumplimiento": {
+            "account_number": "513010",
+            "account_type": "Expense Account"
+          },
+          "Corriente d\u00e9bil": {
+            "account_number": "513015",
+            "account_type": "Expense Account"
+          },
+          "Vida colectiva": {
+            "account_number": "513020",
+            "account_type": "Expense Account"
+          },
+          "Incendio": {
+            "account_number": "513025",
+            "account_type": "Expense Account"
+          },
+          "Terremoto": {
+            "account_number": "513030",
+            "account_type": "Expense Account"
+          },
+          "Sustracci\u00f3n y hurto": {
+            "account_number": "513035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "513040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "513045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "513050",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "513055",
+            "account_type": "Expense Account"
+          },
+          "Responsabilidad civil y extracontractual": {
+            "account_number": "513060",
+            "account_type": "Expense Account"
+          },
+          "Vuelo": {
+            "account_number": "513065",
+            "account_type": "Expense Account"
+          },
+          "Rotura de maquinaria": {
+            "account_number": "513070",
+            "account_type": "Expense Account"
+          },
+          "Obligatorio accidente de tr\u00e1nsito": {
+            "account_number": "513075",
+            "account_type": "Expense Account"
+          },
+          "Lucro cesante": {
+            "account_number": "513080",
+            "account_type": "Expense Account"
+          },
+          "Transporte de mercanc\u00eda": {
+            "account_number": "513085",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "513095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "513099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Servicios": {
+          "account_number": "5135",
+          "account_type": "Expense Account",
+          "Aseo y vigilancia": {
+            "account_number": "513505",
+            "account_type": "Expense Account"
+          },
+          "Temporales": {
+            "account_number": "513510",
+            "account_type": "Expense Account"
+          },
+          "Asistencia t\u00e9cnica": {
+            "account_number": "513515",
+            "account_type": "Expense Account"
+          },
+          "Procesamiento electr\u00f3nico de datos": {
+            "account_number": "513520",
+            "account_type": "Expense Account"
+          },
+          "Acueducto y alcantarillado": {
+            "account_number": "513525",
+            "account_type": "Expense Account"
+          },
+          "Energ\u00eda el\u00e9ctrica": {
+            "account_number": "513530",
+            "account_type": "Expense Account"
+          },
+          "Tel\u00e9fono": {
+            "account_number": "513535",
+            "account_type": "Expense Account"
+          },
+          "Correo, portes y telegramas": {
+            "account_number": "513540",
+            "account_type": "Expense Account"
+          },
+          "Fax y t\u00e9lex": {
+            "account_number": "513545",
+            "account_type": "Expense Account"
+          },
+          "Transporte, fletes y acarreos": {
+            "account_number": "513550",
+            "account_type": "Expense Account"
+          },
+          "Gas": {
+            "account_number": "513555",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "513595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "513599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos legales": {
+          "account_number": "5140",
+          "account_type": "Expense Account",
+          "Notariales": {
+            "account_number": "514005",
+            "account_type": "Expense Account"
+          },
+          "Registro mercantil": {
+            "account_number": "514010",
+            "account_type": "Expense Account"
+          },
+          "Tr\u00e1mites y licencias": {
+            "account_number": "514015",
+            "account_type": "Expense Account"
+          },
+          "Aduaneros": {
+            "account_number": "514020",
+            "account_type": "Expense Account"
+          },
+          "Consulares": {
+            "account_number": "514025",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "514095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "514099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Mantenimiento y reparaciones": {
+          "account_number": "5145",
+          "account_type": "Expense Account",
+          "Terrenos": {
+            "account_number": "514505",
+            "account_type": "Expense Account"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "514510",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "514515",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "514520",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "514525",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "514530",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "514535",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "514540",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "514545",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "514550",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "514555",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "514560",
+            "account_type": "Expense Account"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "514565",
+            "account_type": "Expense Account"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "514570",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "514599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Adecuaci\u00f3n e instalaci\u00f3n": {
+          "account_number": "5150",
+          "account_type": "Expense Account",
+          "Instalaciones el\u00e9ctricas": {
+            "account_number": "515005",
+            "account_type": "Expense Account"
+          },
+          "Arreglos ornamentales": {
+            "account_number": "515010",
+            "account_type": "Expense Account"
+          },
+          "Reparaciones locativas": {
+            "account_number": "515015",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "515095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "515099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos de viaje": {
+          "account_number": "5155",
+          "account_type": "Expense Account",
+          "Alojamiento y manutenci\u00f3n": {
+            "account_number": "515505",
+            "account_type": "Expense Account"
+          },
+          "Pasajes fluviales y/o mar\u00edtimos": {
+            "account_number": "515510",
+            "account_type": "Expense Account"
+          },
+          "Pasajes a\u00e9reos": {
+            "account_number": "515515",
+            "account_type": "Expense Account"
+          },
+          "Pasajes terrestres": {
+            "account_number": "515520",
+            "account_type": "Expense Account"
+          },
+          "Pasajes f\u00e9rreos": {
+            "account_number": "515525",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "515595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "515599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Depreciaciones": {
+          "account_number": "5160",
+          "account_type": "Expense Account",
+          "Construcciones y edificaciones": {
+            "account_number": "516005",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "516010",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "516015",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "516020",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "516025",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "516030",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "516035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "516040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "516045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "516050",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "516055",
+            "account_type": "Expense Account"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "516060",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "516099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Amortizaciones": {
+          "account_number": "5165",
+          "account_type": "Expense Account",
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "516505",
+            "account_type": "Expense Account"
+          },
+          "Intangibles": {
+            "account_number": "516510",
+            "account_type": "Expense Account"
+          },
+          "Cargos diferidos": {
+            "account_number": "516515",
+            "account_type": "Expense Account"
+          },
+          "Otras": {
+            "account_number": "516595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "516599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Diversos": {
+          "account_number": "5195",
+          "account_type": "Expense Account",
+          "Comisiones": {
+            "account_number": "519505",
+            "account_type": "Expense Account"
+          },
+          "Libros, suscripciones, peri\u00f3dicos y revistas": {
+            "account_number": "519510",
+            "account_type": "Expense Account"
+          },
+          "M\u00fasica ambiental": {
+            "account_number": "519515",
+            "account_type": "Expense Account"
+          },
+          "Gastos de representaci\u00f3n y relaciones p\u00fablicas": {
+            "account_number": "519520",
+            "account_type": "Expense Account"
+          },
+          "Elementos de aseo y cafeter\u00eda": {
+            "account_number": "519525",
+            "account_type": "Expense Account"
+          },
+          "\u00datiles, papeler\u00eda y fotocopias": {
+            "account_number": "519530",
+            "account_type": "Expense Account"
+          },
+          "Combustibles y lubricantes": {
+            "account_number": "519535",
+            "account_type": "Expense Account"
+          },
+          "Envases y empaques": {
+            "account_number": "519540",
+            "account_type": "Expense Account"
+          },
+          "Taxis y buses": {
+            "account_number": "519545",
+            "account_type": "Expense Account"
+          },
+          "Estampillas": {
+            "account_number": "519550",
+            "account_type": "Expense Account"
+          },
+          "Microfilmaci\u00f3n": {
+            "account_number": "519555",
+            "account_type": "Expense Account"
+          },
+          "Casino y restaurante": {
+            "account_number": "519560",
+            "account_type": "Expense Account"
+          },
+          "Parqueaderos": {
+            "account_number": "519565",
+            "account_type": "Expense Account"
+          },
+          "Indemnizaci\u00f3n por da\u00f1os a terceros": {
+            "account_number": "519570",
+            "account_type": "Expense Account"
+          },
+          "P\u00f3lvora y similares": {
+            "account_number": "519575",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "519595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "519599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Provisiones": {
+          "account_number": "5199",
+          "account_type": "Expense Account",
+          "Inversiones": {
+            "account_number": "519905",
+            "account_type": "Expense Account"
+          },
+          "Deudores": {
+            "account_number": "519910",
+            "account_type": "Expense Account"
+          },
+          "Propiedades, planta y equipo": {
+            "account_number": "519915",
+            "account_type": "Expense Account"
+          },
+          "Otros activos": {
+            "account_number": "519995",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "519999",
+            "account_type": "Expense Account"
+          }
+        }
+      },
+      "Operacionales de ventas": {
+        "account_number": "52",
+        "account_type": "Expense Account",
+        "Gastos de personal": {
+          "account_number": "5205",
+          "account_type": "Expense Account",
+          "Salario integral": {
+            "account_number": "520503",
+            "account_type": "Expense Account"
+          },
+          "Sueldos": {
+            "account_number": "520506",
+            "account_type": "Expense Account"
+          },
+          "Jornales": {
+            "account_number": "520512",
+            "account_type": "Expense Account"
+          },
+          "Horas extras y recargos": {
+            "account_number": "520515",
+            "account_type": "Expense Account"
+          },
+          "Comisiones": {
+            "account_number": "520518",
+            "account_type": "Expense Account"
+          },
+          "Vi\u00e1ticos": {
+            "account_number": "520521",
+            "account_type": "Expense Account"
+          },
+          "Incapacidades": {
+            "account_number": "520524",
+            "account_type": "Expense Account"
+          },
+          "Auxilio de transporte": {
+            "account_number": "520527",
+            "account_type": "Expense Account"
+          },
+          "Cesant\u00edas": {
+            "account_number": "520530",
+            "account_type": "Expense Account"
+          },
+          "Intereses sobre cesant\u00edas": {
+            "account_number": "520533",
+            "account_type": "Expense Account"
+          },
+          "Prima de servicios": {
+            "account_number": "520536",
+            "account_type": "Expense Account"
+          },
+          "Vacaciones": {
+            "account_number": "520539",
+            "account_type": "Expense Account"
+          },
+          "Primas extralegales": {
+            "account_number": "520542",
+            "account_type": "Expense Account"
+          },
+          "Auxilios": {
+            "account_number": "520545",
+            "account_type": "Expense Account"
+          },
+          "Bonificaciones": {
+            "account_number": "520548",
+            "account_type": "Expense Account"
+          },
+          "Dotaci\u00f3n y suministro a trabajadores": {
+            "account_number": "520551",
+            "account_type": "Expense Account"
+          },
+          "Seguros": {
+            "account_number": "520554",
+            "account_type": "Expense Account"
+          },
+          "Cuotas partes pensiones de jubilaci\u00f3n": {
+            "account_number": "520557",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n c\u00e1lculo actuarial pensiones de jubilaci\u00f3n": {
+            "account_number": "520558",
+            "account_type": "Expense Account"
+          },
+          "Pensiones de jubilaci\u00f3n": {
+            "account_number": "520559",
+            "account_type": "Expense Account"
+          },
+          "Indemnizaciones laborales": {
+            "account_number": "520560",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n bonos pensionales": {
+            "account_number": "520561",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n t\u00edtulos pensionales": {
+            "account_number": "520562",
+            "account_type": "Expense Account"
+          },
+          "Capacitaci\u00f3n al personal": {
+            "account_number": "520563",
+            "account_type": "Expense Account"
+          },
+          "Gastos deportivos y de recreaci\u00f3n": {
+            "account_number": "520566",
+            "account_type": "Expense Account"
+          },
+          "Aportes a administradoras de riesgos profesionales, ARP": {
+            "account_number": "520568",
+            "account_type": "Expense Account"
+          },
+          "Aportes a entidades promotoras de salud, EPS": {
+            "account_number": "520569",
+            "account_type": "Expense Account"
+          },
+          "Aportes a fondos de pensiones y/o cesant\u00edas": {
+            "account_number": "520570",
+            "account_type": "Expense Account"
+          },
+          "Aportes cajas de compensaci\u00f3n familiar": {
+            "account_number": "520572",
+            "account_type": "Expense Account"
+          },
+          "Aportes ICBF": {
+            "account_number": "520575",
+            "account_type": "Expense Account"
+          },
+          "SENA": {
+            "account_number": "520578",
+            "account_type": "Expense Account"
+          },
+          "Aportes sindicales": {
+            "account_number": "520581",
+            "account_type": "Expense Account"
+          },
+          "Gastos m\u00e9dicos y drogas": {
+            "account_number": "520584",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "520595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "520599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Honorarios": {
+          "account_number": "5210",
+          "account_type": "Expense Account",
+          "Junta directiva": {
+            "account_number": "521005",
+            "account_type": "Expense Account"
+          },
+          "Revisor\u00eda fiscal": {
+            "account_number": "521010",
+            "account_type": "Expense Account"
+          },
+          "Auditor\u00eda externa": {
+            "account_number": "521015",
+            "account_type": "Expense Account"
+          },
+          "Aval\u00faos": {
+            "account_number": "521020",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda jur\u00eddica": {
+            "account_number": "521025",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda financiera": {
+            "account_number": "521030",
+            "account_type": "Expense Account"
+          },
+          "Asesor\u00eda t\u00e9cnica": {
+            "account_number": "521035",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "521095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "521099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Impuestos": {
+          "account_number": "5215",
+          "account_type": "Expense Account",
+          "Industria y comercio": {
+            "account_number": "521505",
+            "account_type": "Expense Account"
+          },
+          "De timbres": {
+            "account_number": "521510",
+            "account_type": "Expense Account"
+          },
+          "A la propiedad ra\u00edz": {
+            "account_number": "521515",
+            "account_type": "Expense Account"
+          },
+          "Derechos sobre instrumentos p\u00fablicos": {
+            "account_number": "521520",
+            "account_type": "Expense Account"
+          },
+          "De valorizaci\u00f3n": {
+            "account_number": "521525",
+            "account_type": "Expense Account"
+          },
+          "De turismo": {
+            "account_number": "521530",
+            "account_type": "Expense Account"
+          },
+          "Tasa por utilizaci\u00f3n de puertos": {
+            "account_number": "521535",
+            "account_type": "Expense Account"
+          },
+          "De veh\u00edculos": {
+            "account_number": "521540",
+            "account_type": "Expense Account"
+          },
+          "De espect\u00e1culos p\u00fablicos": {
+            "account_number": "521545",
+            "account_type": "Expense Account"
+          },
+          "Cuotas de fomento": {
+            "account_number": "521550",
+            "account_type": "Expense Account"
+          },
+          "Licores": {
+            "account_number": "521555",
+            "account_type": "Expense Account"
+          },
+          "Cervezas": {
+            "account_number": "521560",
+            "account_type": "Expense Account"
+          },
+          "Cigarrillos": {
+            "account_number": "521565",
+            "account_type": "Expense Account"
+          },
+          "IVA descontable": {
+            "account_number": "521570",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "521595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "521599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Arrendamientos": {
+          "account_number": "5220",
+          "account_type": "Expense Account",
+          "Terrenos": {
+            "account_number": "522005",
+            "account_type": "Expense Account"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "522010",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "522015",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "522020",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "522025",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "522030",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "522035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "522040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "522045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "522050",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "522055",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "522060",
+            "account_type": "Expense Account"
+          },
+          "Aer\u00f3dromos": {
+            "account_number": "522065",
+            "account_type": "Expense Account"
+          },
+          "Semovientes": {
+            "account_number": "522070",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "522095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "522099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Contribuciones y afiliaciones": {
+          "account_number": "5225",
+          "account_type": "Expense Account",
+          "Contribuciones": {
+            "account_number": "522505",
+            "account_type": "Expense Account"
+          },
+          "Afiliaciones y sostenimiento": {
+            "account_number": "522510",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "522599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Seguros": {
+          "account_number": "5230",
+          "account_type": "Expense Account",
+          "Manejo": {
+            "account_number": "523005",
+            "account_type": "Expense Account"
+          },
+          "Cumplimiento": {
+            "account_number": "523010",
+            "account_type": "Expense Account"
+          },
+          "Corriente d\u00e9bil": {
+            "account_number": "523015",
+            "account_type": "Expense Account"
+          },
+          "Vida colectiva": {
+            "account_number": "523020",
+            "account_type": "Expense Account"
+          },
+          "Incendio": {
+            "account_number": "523025",
+            "account_type": "Expense Account"
+          },
+          "Terremoto": {
+            "account_number": "523030",
+            "account_type": "Expense Account"
+          },
+          "Sustracci\u00f3n y hurto": {
+            "account_number": "523035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "523040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "523045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "523050",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "523055",
+            "account_type": "Expense Account"
+          },
+          "Responsabilidad civil y extracontractual": {
+            "account_number": "523060",
+            "account_type": "Expense Account"
+          },
+          "Vuelo": {
+            "account_number": "523065",
+            "account_type": "Expense Account"
+          },
+          "Rotura de maquinaria": {
+            "account_number": "523070",
+            "account_type": "Expense Account"
+          },
+          "Obligatorio accidente de tr\u00e1nsito": {
+            "account_number": "523075",
+            "account_type": "Expense Account"
+          },
+          "Lucro cesante": {
+            "account_number": "523080",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "523095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "523099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Servicios": {
+          "account_number": "5235",
+          "account_type": "Expense Account",
+          "Aseo y vigilancia": {
+            "account_number": "523505",
+            "account_type": "Expense Account"
+          },
+          "Temporales": {
+            "account_number": "523510",
+            "account_type": "Expense Account"
+          },
+          "Asistencia t\u00e9cnica": {
+            "account_number": "523515",
+            "account_type": "Expense Account"
+          },
+          "Procesamiento electr\u00f3nico de datos": {
+            "account_number": "523520",
+            "account_type": "Expense Account"
+          },
+          "Acueducto y alcantarillado": {
+            "account_number": "523525",
+            "account_type": "Expense Account"
+          },
+          "Energ\u00eda el\u00e9ctrica": {
+            "account_number": "523530",
+            "account_type": "Expense Account"
+          },
+          "Tel\u00e9fono": {
+            "account_number": "523535",
+            "account_type": "Expense Account"
+          },
+          "Correo, portes y telegramas": {
+            "account_number": "523540",
+            "account_type": "Expense Account"
+          },
+          "Fax y t\u00e9lex": {
+            "account_number": "523545",
+            "account_type": "Expense Account"
+          },
+          "Transporte, fletes y acarreos": {
+            "account_number": "523550",
+            "account_type": "Expense Account"
+          },
+          "Gas": {
+            "account_number": "523555",
+            "account_type": "Expense Account"
+          },
+          "Publicidad, propaganda y promoci\u00f3n": {
+            "account_number": "523560",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "523595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "523599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos legales": {
+          "account_number": "5240",
+          "account_type": "Expense Account",
+          "Notariales": {
+            "account_number": "524005",
+            "account_type": "Expense Account"
+          },
+          "Registro mercantil": {
+            "account_number": "524010",
+            "account_type": "Expense Account"
+          },
+          "Tr\u00e1mites y licencias": {
+            "account_number": "524015",
+            "account_type": "Expense Account"
+          },
+          "Aduaneros": {
+            "account_number": "524020",
+            "account_type": "Expense Account"
+          },
+          "Consulares": {
+            "account_number": "524025",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "524095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "524099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Mantenimiento y reparaciones": {
+          "account_number": "5245",
+          "account_type": "Expense Account",
+          "Terrenos": {
+            "account_number": "524505",
+            "account_type": "Expense Account"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "524510",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "524515",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "524520",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "524525",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "524530",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "524535",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "524540",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "524545",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "524550",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "524555",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "524560",
+            "account_type": "Expense Account"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "524565",
+            "account_type": "Expense Account"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "524570",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "524599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Adecuaci\u00f3n e instalaci\u00f3n": {
+          "account_number": "5250",
+          "account_type": "Expense Account",
+          "Instalaciones el\u00e9ctricas": {
+            "account_number": "525005",
+            "account_type": "Expense Account"
+          },
+          "Arreglos ornamentales": {
+            "account_number": "525010",
+            "account_type": "Expense Account"
+          },
+          "Reparaciones locativas": {
+            "account_number": "525015",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "525095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "525099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos de viaje": {
+          "account_number": "5255",
+          "account_type": "Expense Account",
+          "Alojamiento y manutenci\u00f3n": {
+            "account_number": "525505",
+            "account_type": "Expense Account"
+          },
+          "Pasajes fluviales y/o mar\u00edtimos": {
+            "account_number": "525510",
+            "account_type": "Expense Account"
+          },
+          "Pasajes a\u00e9reos": {
+            "account_number": "525515",
+            "account_type": "Expense Account"
+          },
+          "Pasajes terrestres": {
+            "account_number": "525520",
+            "account_type": "Expense Account"
+          },
+          "Pasajes f\u00e9rreos": {
+            "account_number": "525525",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "525595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "525599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Depreciaciones": {
+          "account_number": "5260",
+          "account_type": "Expense Account",
+          "Construcciones y edificaciones": {
+            "account_number": "526005",
+            "account_type": "Expense Account"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "526010",
+            "account_type": "Expense Account"
+          },
+          "Equipo de oficina": {
+            "account_number": "526015",
+            "account_type": "Expense Account"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "526020",
+            "account_type": "Expense Account"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "526025",
+            "account_type": "Expense Account"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "526030",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "526035",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "526040",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "526045",
+            "account_type": "Expense Account"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "526050",
+            "account_type": "Expense Account"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "526055",
+            "account_type": "Expense Account"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "526060",
+            "account_type": "Expense Account"
+          },
+          "Envases y empaques": {
+            "account_number": "526065",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "526099",
+            "account_type": "Expense Account"
+          }
+        },
+        "Amortizaciones": {
+          "account_number": "5265",
+          "account_type": "Expense Account",
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "526505",
+            "account_type": "Expense Account"
+          },
+          "Intangibles": {
+            "account_number": "526510",
+            "account_type": "Expense Account"
+          },
+          "Cargos diferidos": {
+            "account_number": "526515",
+            "account_type": "Expense Account"
+          },
+          "Otras": {
+            "account_number": "526595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "526599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Financieros-reajuste del sistema": {
+          "account_number": "5270",
+          "account_type": "Expense Account",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "527099",
+            "account_type": "Expense Account"
+          }
+        },
+        "P\u00e9rdidas m\u00e9todo de participaci\u00f3n": {
+          "account_number": "5275",
+          "account_type": "Expense Account",
+          "De sociedades an\u00f3nimas y/o asimiladas": {
+            "account_number": "527505",
+            "account_type": "Expense Account"
+          },
+          "De sociedades limitadas y/o asimiladas": {
+            "account_number": "527510",
+            "account_type": "Expense Account"
+          }
+        },
+        "Diversos": {
+          "account_number": "5295",
+          "account_type": "Expense Account",
+          "Comisiones": {
+            "account_number": "529505",
+            "account_type": "Expense Account"
+          },
+          "Libros, suscripciones, peri\u00f3dicos y revistas": {
+            "account_number": "529510",
+            "account_type": "Expense Account"
+          },
+          "M\u00fasica ambiental": {
+            "account_number": "529515",
+            "account_type": "Expense Account"
+          },
+          "Gastos de representaci\u00f3n y relaciones p\u00fablicas": {
+            "account_number": "529520",
+            "account_type": "Expense Account"
+          },
+          "Elementos de aseo y cafeter\u00eda": {
+            "account_number": "529525",
+            "account_type": "Expense Account"
+          },
+          "\u00datiles, papeler\u00eda y fotocopias": {
+            "account_number": "529530",
+            "account_type": "Expense Account"
+          },
+          "Combustibles y lubricantes": {
+            "account_number": "529535",
+            "account_type": "Expense Account"
+          },
+          "Envases y empaques": {
+            "account_number": "529540",
+            "account_type": "Expense Account"
+          },
+          "Taxis y buses": {
+            "account_number": "529545",
+            "account_type": "Expense Account"
+          },
+          "Estampillas": {
+            "account_number": "529550",
+            "account_type": "Expense Account"
+          },
+          "Microfilmaci\u00f3n": {
+            "account_number": "529555",
+            "account_type": "Expense Account"
+          },
+          "Casino y restaurante": {
+            "account_number": "529560",
+            "account_type": "Expense Account"
+          },
+          "Parqueaderos": {
+            "account_number": "529565",
+            "account_type": "Expense Account"
+          },
+          "Indemnizaci\u00f3n por da\u00f1os a terceros": {
+            "account_number": "529570",
+            "account_type": "Expense Account"
+          },
+          "P\u00f3lvora y similares": {
+            "account_number": "529575",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "529595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "529599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Provisiones": {
+          "account_number": "5299",
+          "account_type": "Expense Account",
+          "Inversiones": {
+            "account_number": "529905",
+            "account_type": "Expense Account"
+          },
+          "Deudores": {
+            "account_number": "529910",
+            "account_type": "Expense Account"
+          },
+          "Inventarios": {
+            "account_number": "529915",
+            "account_type": "Expense Account"
+          },
+          "Propiedades, planta y equipo": {
+            "account_number": "529920",
+            "account_type": "Expense Account"
+          },
+          "Otros activos": {
+            "account_number": "529995",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "529999",
+            "account_type": "Expense Account"
+          }
+        }
+      },
+      "No operacionales": {
+        "account_number": "53",
+        "account_type": "Expense Account",
+        "Financieros": {
+          "account_number": "5305",
+          "account_type": "Expense Account",
+          "Gastos bancarios": {
+            "account_number": "530505",
+            "account_type": "Expense Account"
+          },
+          "Reajuste monetario-UPAC (hoy UVR)": {
+            "account_number": "530510",
+            "account_type": "Expense Account"
+          },
+          "Comisiones": {
+            "account_number": "530515",
+            "account_type": "Expense Account"
+          },
+          "Intereses": {
+            "account_number": "530520",
+            "account_type": "Expense Account"
+          },
+          "Diferencia en cambio": {
+            "account_number": "530525",
+            "account_type": "Expense Account"
+          },
+          "Gastos en negociaci\u00f3n certificados de cambio": {
+            "account_number": "530530",
+            "account_type": "Expense Account"
+          },
+          "Descuentos comerciales condicionados": {
+            "account_number": "530535",
+            "account_type": "Expense Account"
+          },
+          "Gastos manejo y emisi\u00f3n de bonos": {
+            "account_number": "530540",
+            "account_type": "Expense Account"
+          },
+          "Prima amortizada": {
+            "account_number": "530545",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "530595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "530599",
+            "account_type": "Expense Account"
+          }
+        },
+        "P\u00e9rdida en venta y retiro de bienes": {
+          "account_number": "5310",
+          "account_type": "Expense Account",
+          "Venta de inversiones": {
+            "account_number": "531005",
+            "account_type": "Expense Account"
+          },
+          "Venta de cartera": {
+            "account_number": "531010",
+            "account_type": "Expense Account"
+          },
+          "Venta de propiedades, planta y equipo": {
+            "account_number": "531015",
+            "account_type": "Expense Account"
+          },
+          "Venta de intangibles": {
+            "account_number": "531020",
+            "account_type": "Expense Account"
+          },
+          "Venta de otros activos": {
+            "account_number": "531025",
+            "account_type": "Expense Account"
+          },
+          "Retiro de propiedades, planta y equipo": {
+            "account_number": "531030",
+            "account_type": "Expense Account"
+          },
+          "Retiro de otros activos": {
+            "account_number": "531035",
+            "account_type": "Expense Account"
+          },
+          "P\u00e9rdidas por siniestros": {
+            "account_number": "531040",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "531095",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "531099",
+            "account_type": "Expense Account"
+          }
+        },
+        "P\u00e9rdidas m\u00e9todo de participaci\u00f3n": {
+          "account_number": "5313",
+          "account_type": "Expense Account",
+          "De sociedades an\u00f3nimas y/o asimiladas": {
+            "account_number": "531305",
+            "account_type": "Expense Account"
+          },
+          "De sociedades limitadas y/o asimiladas": {
+            "account_number": "531310",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos extraordinarios": {
+          "account_number": "5315",
+          "account_type": "Expense Account",
+          "Costas y procesos judiciales": {
+            "account_number": "531505",
+            "account_type": "Expense Account"
+          },
+          "Actividades culturales y c\u00edvicas": {
+            "account_number": "531510",
+            "account_type": "Expense Account"
+          },
+          "Costos y gastos de ejercicios anteriores": {
+            "account_number": "531515",
+            "account_type": "Expense Account"
+          },
+          "Impuestos asumidos": {
+            "account_number": "531520",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "531595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "531599",
+            "account_type": "Expense Account"
+          }
+        },
+        "Gastos diversos": {
+          "account_number": "5395",
+          "account_type": "Expense Account",
+          "Demandas laborales": {
+            "account_number": "539505",
+            "account_type": "Expense Account"
+          },
+          "Demandas por incumplimiento de contratos": {
+            "account_number": "539510",
+            "account_type": "Expense Account"
+          },
+          "Indemnizaciones": {
+            "account_number": "539515",
+            "account_type": "Expense Account"
+          },
+          "Multas, sanciones y litigios": {
+            "account_number": "539520",
+            "account_type": "Expense Account"
+          },
+          "Donaciones": {
+            "account_number": "539525",
+            "account_type": "Expense Account"
+          },
+          "Constituci\u00f3n de garant\u00edas": {
+            "account_number": "539530",
+            "account_type": "Expense Account"
+          },
+          "Amortizaci\u00f3n de bienes entregados en comodato": {
+            "account_number": "539535",
+            "account_type": "Expense Account"
+          },
+          "Otros": {
+            "account_number": "539595",
+            "account_type": "Expense Account"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "539599",
+            "account_type": "Expense Account"
+          }
+        }
+      },
+      "Impuesto de renta y complementarios": {
+        "account_number": "54",
+        "account_type": "Expense Account",
+        "Impuesto de renta y complementarios": {
+          "account_number": "5405",
+          "account_type": "Expense Account",
+          "Impuesto de renta y complementarios": {
+            "account_number": "540505",
+            "account_type": "Expense Account"
+          }
+        }
+      },
+      "Ganancias y p\u00e9rdidas": {
+        "account_number": "59",
+        "account_type": "Expense Account",
+        "Ganancias y p\u00e9rdidas": {
+          "account_number": "5905",
+          "account_type": "Expense Account",
+          "Ganancias y p\u00e9rdidas": {
+            "account_number": "590505",
+            "account_type": "Expense Account"
+          }
+        }
+      }
+    },
+    "Costos de ventas": {
+      "account_number": "6",
+      "account_type": "Cost of Goods Sold",
+      "root_type": "Expense",
+      "Costo de ventas y de prestaci\u00f3n de servicios": {
+        "account_number": "61",
+        "account_type": "Cost of Goods Sold",
+        "Agricultura, ganader\u00eda, caza y silvicultura": {
+          "account_number": "6105",
+          "account_type": "Cost of Goods Sold",
+          "Cultivo de cereales": {
+            "account_number": "610505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivos de hortalizas, legumbres y plantas ornamentales": {
+            "account_number": "610510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivos de frutas, nueces y plantas arom\u00e1ticas": {
+            "account_number": "610515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivo de caf\u00e9": {
+            "account_number": "610520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivo de flores": {
+            "account_number": "610525",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivo de ca\u00f1a de az\u00facar": {
+            "account_number": "610530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivo de algod\u00f3n y plantas para material textil": {
+            "account_number": "610535",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cultivo de banano": {
+            "account_number": "610540",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Otros cultivos agr\u00edcolas": {
+            "account_number": "610545",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cr\u00eda de ovejas, cabras, asnos, mulas y burd\u00e9ganos": {
+            "account_number": "610550",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cr\u00eda de ganado caballar y vacuno": {
+            "account_number": "610555",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Producci\u00f3n av\u00edcola": {
+            "account_number": "610560",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Cr\u00eda de otros animales": {
+            "account_number": "610565",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicios agr\u00edcolas y ganaderos": {
+            "account_number": "610570",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividad de caza": {
+            "account_number": "610575",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividad de silvicultura": {
+            "account_number": "610580",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "610595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "610599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Pesca": {
+          "account_number": "6110",
+          "account_type": "Cost of Goods Sold",
+          "Actividad de pesca": {
+            "account_number": "611005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Explotaci\u00f3n de criaderos de peces": {
+            "account_number": "611010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "611095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "611099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Explotaci\u00f3n de minas y canteras": {
+          "account_number": "6115",
+          "account_type": "Cost of Goods Sold",
+          "Carb\u00f3n": {
+            "account_number": "611505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Petr\u00f3leo crudo": {
+            "account_number": "611510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Gas natural": {
+            "account_number": "611512",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicios relacionados con extracci\u00f3n de petr\u00f3leo y gas": {
+            "account_number": "611514",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Minerales de hierro": {
+            "account_number": "611515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Minerales metal\u00edferos no ferrosos": {
+            "account_number": "611520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Piedra, arena y arcilla": {
+            "account_number": "611525",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Piedras preciosas": {
+            "account_number": "611527",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Oro": {
+            "account_number": "611528",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Otras minas y canteras": {
+            "account_number": "611530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Prestaci\u00f3n de servicios sector minero": {
+            "account_number": "611532",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "611595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "611599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Industrias manufactureras": {
+          "account_number": "6120",
+          "account_type": "Cost of Goods Sold",
+          "Producci\u00f3n y procesamiento de carnes y productos c\u00e1rnicos": {
+            "account_number": "612001",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Productos de pescado": {
+            "account_number": "612002",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Productos de frutas, legumbres y hortalizas": {
+            "account_number": "612003",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de aceites y grasas": {
+            "account_number": "612004",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n  de productos l\u00e1cteos": {
+            "account_number": "612005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de moliner\u00eda": {
+            "account_number": "612006",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de almidones y derivados": {
+            "account_number": "612007",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de alimentos para animales": {
+            "account_number": "612008",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos para panader\u00eda": {
+            "account_number": "612009",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de az\u00facar y melazas": {
+            "account_number": "612010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de cacao, chocolate y confiter\u00eda": {
+            "account_number": "612011",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n  de pastas y productos farin\u00e1ceos": {
+            "account_number": "612012",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de caf\u00e9": {
+            "account_number": "612013",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos alimenticios": {
+            "account_number": "612014",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de bebidas alcoh\u00f3licas y alcohol et\u00edlico": {
+            "account_number": "612015",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de vinos": {
+            "account_number": "612016",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de bebidas malteadas y de malta": {
+            "account_number": "612017",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de bebidas no alcoh\u00f3licas": {
+            "account_number": "612018",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de tabaco": {
+            "account_number": "612019",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Preparaci\u00f3n e hilatura de fibras textiles y tejedur\u00eda": {
+            "account_number": "612020",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Acabado de productos textiles": {
+            "account_number": "612021",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de art\u00edculos de materiales textiles": {
+            "account_number": "612022",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de tapices y alfombras": {
+            "account_number": "612023",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de cuerdas, cordeles, bramantes y redes": {
+            "account_number": "612024",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos textiles": {
+            "account_number": "612025",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de tejidos": {
+            "account_number": "612026",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de prendas de vestir": {
+            "account_number": "612027",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Preparaci\u00f3n, adobo y te\u00f1ido de pieles": {
+            "account_number": "612028",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Curtido, adobo o preparaci\u00f3n de cuero": {
+            "account_number": "612029",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de maletas, bolsos y similares": {
+            "account_number": "612030",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de calzado": {
+            "account_number": "612031",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Producci\u00f3n de madera, art\u00edculos de madera y corcho": {
+            "account_number": "612032",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de pasta y productos de madera, papel y cart\u00f3n": {
+            "account_number": "612033",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ediciones y publicaciones": {
+            "account_number": "612034",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Impresi\u00f3n": {
+            "account_number": "612035",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicios relacionados con la edici\u00f3n y la impresi\u00f3n": {
+            "account_number": "612036",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Reproducci\u00f3n de grabaciones": {
+            "account_number": "612037",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de horno de coque": {
+            "account_number": "612038",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de la refinaci\u00f3n de petr\u00f3leo": {
+            "account_number": "612039",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de sustancias qu\u00edmicas b\u00e1sicas": {
+            "account_number": "612040",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de abonos y compuestos de nitr\u00f3geno": {
+            "account_number": "612041",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de pl\u00e1stico y caucho sint\u00e9tico": {
+            "account_number": "612042",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos qu\u00edmicos de uso agropecuario": {
+            "account_number": "612043",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de pinturas, tintas y masillas": {
+            "account_number": "612044",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos farmac\u00e9uticos y bot\u00e1nicos": {
+            "account_number": "612045",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de jabones, detergentes y preparados de tocador": {
+            "account_number": "612046",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos qu\u00edmicos": {
+            "account_number": "612047",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de fibras": {
+            "account_number": "612048",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos de caucho": {
+            "account_number": "612049",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de pl\u00e1stico": {
+            "account_number": "612050",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de vidrio y productos de vidrio": {
+            "account_number": "612051",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de productos de cer\u00e1mica, loza, piedra, arcilla y porcelana": {
+            "account_number": "612052",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de cemento, cal y yeso": {
+            "account_number": "612053",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de art\u00edculos de hormig\u00f3n, cemento y yeso": {
+            "account_number": "612054",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Corte, tallado y acabado de la piedra": {
+            "account_number": "612055",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos minerales no met\u00e1licos": {
+            "account_number": "612056",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Industrias b\u00e1sicas y fundici\u00f3n de hierro y acero": {
+            "account_number": "612057",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Productos primarios de metales preciosos y de metales no ferrosos": {
+            "account_number": "612058",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fundici\u00f3n de metales no ferrosos": {
+            "account_number": "612059",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de productos met\u00e1licos para uso estructural": {
+            "account_number": "612060",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Forja, prensado, estampado, laminado de metal y pulvimetalurgia": {
+            "account_number": "612061",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Revestimiento de metales y obras de ingenier\u00eda mec\u00e1nica": {
+            "account_number": "612062",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de art\u00edculos de ferreter\u00eda": {
+            "account_number": "612063",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros productos de metal": {
+            "account_number": "612064",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de maquinaria y equipo": {
+            "account_number": "612065",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de equipos de elevaci\u00f3n y manipulaci\u00f3n": {
+            "account_number": "612066",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de aparatos de uso dom\u00e9stico": {
+            "account_number": "612067",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de equipo de oficina": {
+            "account_number": "612068",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de pilas y bater\u00edas primarias": {
+            "account_number": "612069",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de equipo de iluminaci\u00f3n": {
+            "account_number": "612070",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Elaboraci\u00f3n de otros tipos de equipo el\u00e9ctrico": {
+            "account_number": "612071",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de equipos de radio, televisi\u00f3n y comunicaciones": {
+            "account_number": "612072",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de aparatos e instrumentos m\u00e9dicos": {
+            "account_number": "612073",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de instrumentos de medici\u00f3n y control": {
+            "account_number": "612074",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de instrumentos de \u00f3ptica y equipo fotogr\u00e1fico": {
+            "account_number": "612075",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de relojes": {
+            "account_number": "612076",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de veh\u00edculos automotores": {
+            "account_number": "612077",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de carrocer\u00edas para automotores": {
+            "account_number": "612078",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de partes, piezas y accesorios para automotores": {
+            "account_number": "612079",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n y reparaci\u00f3n de buques y otras embarcaciones": {
+            "account_number": "612080",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de locomotoras y material rodante para ferrocarriles": {
+            "account_number": "612081",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de aeronaves": {
+            "account_number": "612082",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de motocicletas": {
+            "account_number": "612083",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de bicicletas y sillas de ruedas": {
+            "account_number": "612084",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de otros tipos de transporte": {
+            "account_number": "612085",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de muebles": {
+            "account_number": "612086",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de joyas y art\u00edculos conexos": {
+            "account_number": "612087",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de instrumentos de m\u00fasica": {
+            "account_number": "612088",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de art\u00edculos y equipo para deporte": {
+            "account_number": "612089",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de juegos y juguetes": {
+            "account_number": "612090",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Reciclamiento de desperdicios": {
+            "account_number": "612091",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Productos de otras industrias manufactureras": {
+            "account_number": "612095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "612099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Suministro de electricidad, gas y agua": {
+          "account_number": "6125",
+          "account_type": "Cost of Goods Sold",
+          "Generaci\u00f3n, captaci\u00f3n y distribuci\u00f3n de energ\u00eda el\u00e9ctrica": {
+            "account_number": "612505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fabricaci\u00f3n de gas y distribuci\u00f3n de combustibles gaseosos": {
+            "account_number": "612510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Captaci\u00f3n, depuraci\u00f3n y distribuci\u00f3n de agua": {
+            "account_number": "612515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "612595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "612599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Construcci\u00f3n": {
+          "account_number": "6130",
+          "account_type": "Cost of Goods Sold",
+          "Preparaci\u00f3n de terrenos": {
+            "account_number": "613005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Construcci\u00f3n de edificios y obras de ingenier\u00eda civil": {
+            "account_number": "613010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Acondicionamiento de edificios": {
+            "account_number": "613015",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Terminaci\u00f3n de edificaciones": {
+            "account_number": "613020",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Alquiler de equipo con operario": {
+            "account_number": "613025",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "613095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "613099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Comercio al por mayor y al por menor": {
+          "account_number": "6135",
+          "account_type": "Cost of Goods Sold",
+          "Venta de veh\u00edculos automotores": {
+            "account_number": "613502",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Mantenimiento, reparaci\u00f3n y lavado de veh\u00edculos automotores": {
+            "account_number": "613504",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de partes, piezas y accesorios de veh\u00edculos automotores": {
+            "account_number": "613506",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta  de combustibles s\u00f3lidos, l\u00edquidos, gaseosos": {
+            "account_number": "613508",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de lubricantes, aditivos, llantas y lujos para automotores": {
+            "account_number": "613510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta a cambio de retribuci\u00f3n o por contrata": {
+            "account_number": "613512",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de insumos, materias primas agropecuarias y flores": {
+            "account_number": "613514",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de otros insumos y materias primas no agropecuarias": {
+            "account_number": "613516",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de animales vivos y cueros": {
+            "account_number": "613518",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos en almacenes no especializados": {
+            "account_number": "613520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos agropecuarios": {
+            "account_number": "613522",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos textiles, de vestir, de cuero y calzado": {
+            "account_number": "613524",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de papel y cart\u00f3n": {
+            "account_number": "613526",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de libros, revistas, elementos de papeler\u00eda, \u00fatiles y textos escolares": {
+            "account_number": "613528",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de juegos, juguetes y art\u00edculos deportivos": {
+            "account_number": "613530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de instrumentos quir\u00fargicos y ortop\u00e9dicos": {
+            "account_number": "613532",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de art\u00edculos en relojer\u00edas y joyer\u00edas": {
+            "account_number": "613534",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de electrodom\u00e9sticos y muebles": {
+            "account_number": "613536",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos de aseo, farmac\u00e9uticos,  medicinales y art\u00edculos de tocador": {
+            "account_number": "613538",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de cubiertos, vajillas, cristaler\u00eda, porcelanas, cer\u00e1micas y otros art\u00edculos de uso dom\u00e9stico": {
+            "account_number": "613540",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de materiales de construcci\u00f3n, fontaner\u00eda y calefacci\u00f3n": {
+            "account_number": "613542",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de pinturas y lacas": {
+            "account_number": "613544",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos de vidrios y marqueter\u00eda": {
+            "account_number": "613546",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de herramientas y art\u00edculos de ferreter\u00eda": {
+            "account_number": "613548",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de qu\u00edmicos": {
+            "account_number": "613550",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de productos intermedios, desperdicios y desechos": {
+            "account_number": "613552",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de maquinaria, equipo de oficina y programas de computador": {
+            "account_number": "613554",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de art\u00edculos en cacharrer\u00edas y miscel\u00e1neas": {
+            "account_number": "613556",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de instrumentos musicales": {
+            "account_number": "613558",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de art\u00edculos en casas de empe\u00f1o y prender\u00edas": {
+            "account_number": "613560",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de equipo fotogr\u00e1fico": {
+            "account_number": "613562",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de equipo \u00f3ptico y de precisi\u00f3n": {
+            "account_number": "613564",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de empaques": {
+            "account_number": "613566",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de equipo profesional y cient\u00edfico": {
+            "account_number": "613568",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de loter\u00edas, rifas, chance, apuestas y similares": {
+            "account_number": "613570",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Reparaci\u00f3n de efectos personales y electrodom\u00e9sticos": {
+            "account_number": "613572",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Venta de otros productos": {
+            "account_number": "613595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "613599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Hoteles y restaurantes": {
+          "account_number": "6140",
+          "account_type": "Cost of Goods Sold",
+          "Hoteler\u00eda": {
+            "account_number": "614005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Campamento y otros tipos de hospedaje": {
+            "account_number": "614010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Restaurantes": {
+            "account_number": "614015",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Bares y cantinas": {
+            "account_number": "614020",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "614095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "614099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Transporte, almacenamiento y comunicaciones": {
+          "account_number": "6145",
+          "account_type": "Cost of Goods Sold",
+          "Servicio de transporte por carretera": {
+            "account_number": "614505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de transporte por v\u00eda f\u00e9rrea": {
+            "account_number": "614510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de transporte por v\u00eda acu\u00e1tica": {
+            "account_number": "614515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de transporte por v\u00eda a\u00e9rea": {
+            "account_number": "614520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de transporte por tuber\u00edas": {
+            "account_number": "614525",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Manipulaci\u00f3n de carga": {
+            "account_number": "614530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Almacenamiento y dep\u00f3sito": {
+            "account_number": "614535",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicios complementarios para el transporte": {
+            "account_number": "614540",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Agencias de viaje": {
+            "account_number": "614545",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Otras agencias de transporte": {
+            "account_number": "614550",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio postal y de correo": {
+            "account_number": "614555",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio telef\u00f3nico": {
+            "account_number": "614560",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de tel\u00e9grafo": {
+            "account_number": "614565",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de transmisi\u00f3n de datos": {
+            "account_number": "614570",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de radio y televisi\u00f3n por cable": {
+            "account_number": "614575",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Transmisi\u00f3n de sonido e im\u00e1genes por contrato": {
+            "account_number": "614580",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "614595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "614599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Actividad financiera": {
+          "account_number": "6150",
+          "account_type": "Cost of Goods Sold",
+          "De inversiones": {
+            "account_number": "615005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "De servicio de bolsa": {
+            "account_number": "615010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "615099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Actividades inmobiliarias, empresariales y de alquiler": {
+          "account_number": "6155",
+          "account_type": "Cost of Goods Sold",
+          "Arrendamientos de bienes inmuebles": {
+            "account_number": "615505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Inmobiliarias por retribuci\u00f3n o contrata": {
+            "account_number": "615510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Alquiler equipo de transporte": {
+            "account_number": "615515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Alquiler maquinaria y equipo": {
+            "account_number": "615520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Alquiler de efectos personales y enseres dom\u00e9sticos": {
+            "account_number": "615525",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Consultor\u00eda en equipo y programas de inform\u00e1tica": {
+            "account_number": "615530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Procesamiento de datos": {
+            "account_number": "615535",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Mantenimiento y reparaci\u00f3n de maquinaria de oficina": {
+            "account_number": "615540",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Investigaciones cient\u00edficas y de desarrollo": {
+            "account_number": "615545",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades empresariales de consultor\u00eda": {
+            "account_number": "615550",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Publicidad": {
+            "account_number": "615555",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Dotaci\u00f3n de personal": {
+            "account_number": "615560",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Investigaci\u00f3n y seguridad": {
+            "account_number": "615565",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Limpieza de inmuebles": {
+            "account_number": "615570",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fotograf\u00eda": {
+            "account_number": "615575",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Envase y empaque": {
+            "account_number": "615580",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Fotocopiado": {
+            "account_number": "615585",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Mantenimiento y reparaci\u00f3n de maquinaria y  equipo": {
+            "account_number": "615590",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "615595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "615599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Ense\u00f1anza": {
+          "account_number": "6160",
+          "account_type": "Cost of Goods Sold",
+          "Actividades relacionadas con la educaci\u00f3n": {
+            "account_number": "616005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "616095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "616099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Servicios sociales y de salud": {
+          "account_number": "6165",
+          "account_type": "Cost of Goods Sold",
+          "Servicio hospitalario": {
+            "account_number": "616505",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio m\u00e9dico": {
+            "account_number": "616510",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio odontol\u00f3gico": {
+            "account_number": "616515",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicio de laboratorio": {
+            "account_number": "616520",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades veterinarias": {
+            "account_number": "616525",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades de servicios sociales": {
+            "account_number": "616530",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "616595",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "616599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Otras actividades de servicios comunitarios, sociales y personales": {
+          "account_number": "6170",
+          "account_type": "Cost of Goods Sold",
+          "Eliminaci\u00f3n de desperdicios y aguas residuales": {
+            "account_number": "617005",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades de asociaci\u00f3n": {
+            "account_number": "617010",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Producci\u00f3n y distribuci\u00f3n de filmes y videocintas": {
+            "account_number": "617015",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Exhibici\u00f3n de filmes y videocintas": {
+            "account_number": "617020",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividad de radio y televisi\u00f3n": {
+            "account_number": "617025",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividad teatral, musical y art\u00edstica": {
+            "account_number": "617030",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Grabaci\u00f3n y producci\u00f3n de discos": {
+            "account_number": "617035",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Entretenimiento y esparcimiento": {
+            "account_number": "617040",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Agencias de noticias": {
+            "account_number": "617045",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Lavander\u00edas y similares": {
+            "account_number": "617050",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Peluquer\u00edas y similares": {
+            "account_number": "617055",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Servicios funerarios": {
+            "account_number": "617060",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Zonas francas": {
+            "account_number": "617065",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Actividades conexas": {
+            "account_number": "617095",
+            "account_type": "Cost of Goods Sold"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "617099",
+            "account_type": "Cost of Goods Sold"
+          }
+        }
+      },
+      "Compras": {
+        "account_number": "62",
+        "account_type": "Cost of Goods Sold",
+        "De mercanc\u00edas": {
+          "account_number": "6205",
+          "account_type": "Cost of Goods Sold",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "620599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "De materias primas": {
+          "account_number": "6210",
+          "account_type": "Cost of Goods Sold",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "621099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "De materiales indirectos": {
+          "account_number": "6215",
+          "account_type": "Cost of Goods Sold",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "621599",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Compra de energ\u00eda": {
+          "account_number": "6220",
+          "account_type": "Cost of Goods Sold",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "622099",
+            "account_type": "Cost of Goods Sold"
+          }
+        },
+        "Devoluciones en compras (CR)": {
+          "account_number": "6225",
+          "account_type": "Cost of Goods Sold",
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "622599",
+            "account_type": "Cost of Goods Sold"
+          }
+        }
+      }
+    },
+    "Costos de producci\u00f3n o de operaci\u00f3n": {
+      "account_number": "7",
+      "account_type": "Cost of Goods Sold",
+      "root_type": "Expense",
+      "Materia prima": {
+        "account_number": "71",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Mano de obra directa": {
+        "account_number": "72",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Costos indirectos": {
+        "account_number": "73",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Contratos de servicios": {
+        "account_number": "74",
+        "account_type": "Cost of Goods Sold"
+      }
+    },
+    "Cuentas de orden deudoras": {
+      "account_number": "8",
+      "root_type": "Asset",
+      "Derechos contingentes": {
+        "account_number": "81",
+        "Bienes y valores entregados en custodia": {
+          "account_number": "8105",
+          "Valores mobiliarios": {
+            "account_number": "810505"
+          },
+          "Bienes muebles": {
+            "account_number": "810510"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "810599"
+          }
+        },
+        "Bienes y valores entregados en garant\u00eda": {
+          "account_number": "8110",
+          "Valores mobiliarios": {
+            "account_number": "811005"
+          },
+          "Bienes muebles": {
+            "account_number": "811010"
+          },
+          "Bienes inmuebles": {
+            "account_number": "811015"
+          },
+          "Contratos de ganado en participaci\u00f3n": {
+            "account_number": "811020"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "811099"
+          }
+        },
+        "Bienes y valores en poder de terceros": {
+          "account_number": "8115",
+          "En arrendamiento": {
+            "account_number": "811505"
+          },
+          "En pr\u00e9stamo": {
+            "account_number": "811510"
+          },
+          "En dep\u00f3sito": {
+            "account_number": "811515"
+          },
+          "En consignaci\u00f3n": {
+            "account_number": "811520"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "811599"
+          }
+        },
+        "Litigios y/o demandas": {
+          "account_number": "8120",
+          "Ejecutivos": {
+            "account_number": "812005"
+          },
+          "Incumplimiento de contratos": {
+            "account_number": "812010"
+          }
+        },
+        "Promesas de compraventa": {
+          "account_number": "8125"
+        },
+        "Diversas": {
+          "account_number": "8195",
+          "Valores adquiridos por recibir": {
+            "account_number": "819505"
+          },
+          "Otras": {
+            "account_number": "819595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "819599"
+          }
+        }
+      },
+      "Deudoras fiscales": {
+        "account_number": "82"
+      },
+      "Deudoras de control": {
+        "account_number": "83",
+        "Bienes recibidos en arrendamiento financiero": {
+          "account_number": "8305",
+          "Bienes muebles": {
+            "account_number": "830505"
+          },
+          "Bienes inmuebles": {
+            "account_number": "830510"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "830599"
+          }
+        },
+        "T\u00edtulos de inversi\u00f3n no colocados": {
+          "account_number": "8310",
+          "Acciones": {
+            "account_number": "831005"
+          },
+          "Bonos": {
+            "account_number": "831010"
+          },
+          "Otros": {
+            "account_number": "831095"
+          }
+        },
+        "Propiedades, planta y equipo totalmente depreciados, agotados y/o amortizados": {
+          "account_number": "8315",
+          "Materiales proyectos petroleros": {
+            "account_number": "831506"
+          },
+          "Construcciones y edificaciones": {
+            "account_number": "831516"
+          },
+          "Maquinaria y equipo": {
+            "account_number": "831520"
+          },
+          "Equipo de oficina": {
+            "account_number": "831524"
+          },
+          "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+            "account_number": "831528"
+          },
+          "Equipo m\u00e9dico-cient\u00edfico": {
+            "account_number": "831532"
+          },
+          "Equipo de hoteles y restaurantes": {
+            "account_number": "831536"
+          },
+          "Flota y equipo de transporte": {
+            "account_number": "831540"
+          },
+          "Flota y equipo fluvial y/o mar\u00edtimo": {
+            "account_number": "831544"
+          },
+          "Flota y equipo a\u00e9reo": {
+            "account_number": "831548"
+          },
+          "Flota y equipo f\u00e9rreo": {
+            "account_number": "831552"
+          },
+          "Acueductos, plantas y redes": {
+            "account_number": "831556"
+          },
+          "Armamento de vigilancia": {
+            "account_number": "831560"
+          },
+          "Envases y empaques": {
+            "account_number": "831562"
+          },
+          "Plantaciones agr\u00edcolas y forestales": {
+            "account_number": "831564"
+          },
+          "V\u00edas de comunicaci\u00f3n": {
+            "account_number": "831568"
+          },
+          "Minas y canteras": {
+            "account_number": "831572"
+          },
+          "Pozos artesianos": {
+            "account_number": "831576"
+          },
+          "Yacimientos": {
+            "account_number": "831580"
+          },
+          "Semovientes": {
+            "account_number": "831584"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "831599"
+          }
+        },
+        "Cr\u00e9ditos a favor no utilizados": {
+          "account_number": "8320",
+          "Pa\u00eds": {
+            "account_number": "832005"
+          },
+          "Exterior": {
+            "account_number": "832010"
+          }
+        },
+        "Activos castigados": {
+          "account_number": "8325",
+          "Inversiones": {
+            "account_number": "832505"
+          },
+          "Deudores": {
+            "account_number": "832510"
+          },
+          "Otros activos": {
+            "account_number": "832595"
+          }
+        },
+        "T\u00edtulos de inversi\u00f3n amortizados": {
+          "account_number": "8330",
+          "Bonos": {
+            "account_number": "833005"
+          },
+          "Otros": {
+            "account_number": "833095"
+          }
+        },
+        "Capitalizaci\u00f3n por revalorizaci\u00f3n de patrimonio": {
+          "account_number": "8335"
+        },
+        "Otras cuentas deudoras de control": {
+          "account_number": "8395",
+          "Cheques posfechados": {
+            "account_number": "839505"
+          },
+          "Certificados de dep\u00f3sito a t\u00e9rmino": {
+            "account_number": "839510"
+          },
+          "Cheques devueltos": {
+            "account_number": "839515"
+          },
+          "Bienes y valores en fideicomiso": {
+            "account_number": "839520"
+          },
+          "Intereses sobre deudas vencidas": {
+            "account_number": "839525"
+          },
+          "Diversas": {
+            "account_number": "839595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "839599"
+          }
+        },
+        "Ajustes por inflaci\u00f3n activos": {
+          "account_number": "8399",
+          "Inversiones": {
+            "account_number": "839905"
+          },
+          "Inventarios": {
+            "account_number": "839910"
+          },
+          "Propiedades, planta y equipo": {
+            "account_number": "839915"
+          },
+          "Intangibles": {
+            "account_number": "839920"
+          },
+          "Cargos diferidos": {
+            "account_number": "839925"
+          },
+          "Otros activos": {
+            "account_number": "839995"
+          }
+        }
+      },
+      "Derechos contingentes por contra (CR)": {
+        "account_number": "84"
+      },
+      "Deudoras fiscales por contra (CR)": {
+        "account_number": "85"
+      },
+      "Deudoras de control por contra (CR)": {
+        "account_number": "86"
+      }
+    },
+    "Cuentas de orden acreedoras": {
+      "account_number": "9",
+      "root_type": "Liability",
+      "Responsabilidades contingentes": {
+        "account_number": "91",
+        "Bienes y valores recibidos en custodia": {
+          "account_number": "9105",
+          "Valores mobiliarios": {
+            "account_number": "910505"
+          },
+          "Bienes muebles": {
+            "account_number": "910510"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "910599"
+          }
+        },
+        "Bienes y valores recibidos en garant\u00eda": {
+          "account_number": "9110",
+          "Valores mobiliarios": {
+            "account_number": "911005"
+          },
+          "Bienes muebles": {
+            "account_number": "911010"
+          },
+          "Bienes inmuebles": {
+            "account_number": "911015"
+          },
+          "Contratos de ganado en participaci\u00f3n": {
+            "account_number": "911020"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "911099"
+          }
+        },
+        "Bienes y valores recibidos de terceros": {
+          "account_number": "9115",
+          "En arrendamiento": {
+            "account_number": "911505"
+          },
+          "En pr\u00e9stamo": {
+            "account_number": "911510"
+          },
+          "En dep\u00f3sito": {
+            "account_number": "911515"
+          },
+          "En consignaci\u00f3n": {
+            "account_number": "911520"
+          },
+          "En comodato": {
+            "account_number": "911525"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "911599"
+          }
+        },
+        "Litigios y/o demandas": {
+          "account_number": "9120",
+          "Laborales": {
+            "account_number": "912005"
+          },
+          "Civiles": {
+            "account_number": "912010"
+          },
+          "Administrativos o arbitrales": {
+            "account_number": "912015"
+          },
+          "Tributarios": {
+            "account_number": "912020"
+          }
+        },
+        "Promesas de compraventa": {
+          "account_number": "9125"
+        },
+        "Contratos de administraci\u00f3n delegada": {
+          "account_number": "9130"
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "9135"
+        },
+        "Otras responsabilidades contingentes": {
+          "account_number": "9195"
+        }
+      },
+      "Acreedoras fiscales": {
+        "account_number": "92"
+      },
+      "Acreedoras de control": {
+        "account_number": "93",
+        "Contratos de arrendamiento financiero": {
+          "account_number": "9305",
+          "Bienes muebles": {
+            "account_number": "930505"
+          },
+          "Bienes inmuebles": {
+            "account_number": "930510"
+          }
+        },
+        "Otras cuentas de orden acreedoras de control": {
+          "account_number": "9395",
+          "Documentos por cobrar descontados": {
+            "account_number": "939505"
+          },
+          "Convenios de pago": {
+            "account_number": "939510"
+          },
+          "Contratos de construcciones e instalaciones por ejecutar": {
+            "account_number": "939515"
+          },
+          "Adjudicaciones pendientes de legalizar": {
+            "account_number": "939525"
+          },
+          "Reserva art\u00edculo 3\u00ba Ley 4\u00aa de 1980": {
+            "account_number": "939530"
+          },
+          "Reserva costo reposici\u00f3n semovientes": {
+            "account_number": "939535"
+          },
+          "Diversas": {
+            "account_number": "939595"
+          },
+          "Ajustes por inflaci\u00f3n": {
+            "account_number": "939599"
+          }
+        },
+        "Ajustes por inflaci\u00f3n patrimonio": {
+          "account_number": "9399",
+          "Capital social": {
+            "account_number": "939905"
+          },
+          "Super\u00e1vit de capital": {
+            "account_number": "939910"
+          },
+          "Reservas": {
+            "account_number": "939915"
+          },
+          "Dividendos o participaciones decretadas en acciones, cuotas o partes de inter\u00e9s social": {
+            "account_number": "939925"
+          },
+          "Resultados de ejercicios anteriores": {
+            "account_number": "939930"
+          }
+        }
+      },
+      "Responsabilidades contingentes por contra (DB)": {
+        "account_number": "94"
+      },
+      "Acreedoras fiscales por contra (DB)": {
+        "account_number": "95"
+      },
+      "Acreedoras de control por contra (DB)": {
+        "account_number": "96"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas_simple.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas_simple.json
new file mode 100644
index 0000000..cd6ce1e
--- /dev/null
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/co_plan_unico_de_cuentas_simple.json
@@ -0,0 +1,1746 @@
+{
+  "country_code": "co",
+  "name": "Colombia PUC Simple",
+  "tree": {
+    "Activo": {
+      "account_number": "1",
+      "root_type": "Asset",
+      "Disponible": {
+        "account_number": "11",
+        "Caja": {
+          "account_number": "1105",
+          "account_type": "Cash",
+          "is_group": 1
+        },
+        "Bancos": {
+          "account_number": "1110",
+          "account_type": "Bank",
+          "is_group": 1
+        },
+        "Remesas en tr\u00e1nsito": {
+          "account_number": "1115",
+          "is_group": 1
+        },
+        "Cuentas de ahorro": {
+          "account_number": "1120",
+          "is_group": 1
+        },
+        "Fondos": {
+          "account_number": "1125",
+          "is_group": 1
+        }
+      },
+      "Inversiones": {
+        "account_number": "12",
+        "Acciones": {
+          "account_number": "1205",
+          "is_group": 1
+        },
+        "Cuotas o partes de inter\u00e9s social": {
+          "account_number": "1210",
+          "is_group": 1
+        },
+        "Bonos": {
+          "account_number": "1215",
+          "is_group": 1
+        },
+        "C\u00e9dulas": {
+          "account_number": "1220",
+          "is_group": 1
+        },
+        "Certificados": {
+          "account_number": "1225",
+          "is_group": 1
+        },
+        "Papeles comerciales": {
+          "account_number": "1230",
+          "is_group": 1
+        },
+        "T\u00edtulos": {
+          "account_number": "1235",
+          "is_group": 1
+        },
+        "Aceptaciones bancarias o financieras": {
+          "account_number": "1240",
+          "is_group": 1
+        },
+        "Derechos fiduciarios": {
+          "account_number": "1245",
+          "is_group": 1
+        },
+        "Derechos de recompra de inversiones negociadas (repos)": {
+          "account_number": "1250",
+          "is_group": 1
+        },
+        "Obligatorias": {
+          "account_number": "1255",
+          "is_group": 1
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "1260",
+          "is_group": 1
+        },
+        "Otras inversiones": {
+          "account_number": "1295",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "1299",
+          "is_group": 1
+        }
+      },
+      "Deudores": {
+        "account_number": "13",
+        "account_type": "Receivable",
+        "Clientes": {
+          "account_number": "1305",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas corrientes comerciales": {
+          "account_number": "1310",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas por cobrar a casa matriz": {
+          "account_number": "1315",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas por cobrar a vinculados econ\u00f3micos": {
+          "account_number": "1320",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas por cobrar a directores": {
+          "account_number": "1323",
+          "account_type": "Receivable"
+        },
+        "Cuentas por cobrar a socios y accionistas": {
+          "account_number": "1325",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Aportes por cobrar": {
+          "account_number": "1328",
+          "account_type": "Receivable"
+        },
+        "Anticipos y avances": {
+          "account_number": "1330",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas de operaci\u00f3n conjunta": {
+          "account_number": "1332",
+          "account_type": "Receivable"
+        },
+        "Dep\u00f3sitos": {
+          "account_number": "1335",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Promesas de compra venta": {
+          "account_number": "1340",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Ingresos por cobrar": {
+          "account_number": "1345",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Retenci\u00f3n sobre contratos": {
+          "account_number": "1350",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Anticipo de impuestos y contribuciones o saldos a favor": {
+          "account_number": "1355",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Reclamaciones": {
+          "account_number": "1360",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Cuentas por cobrar a trabajadores": {
+          "account_number": "1365",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Pr\u00e9stamos a particulares": {
+          "account_number": "1370",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Deudores varios": {
+          "account_number": "1380",
+          "account_type": "Receivable",
+          "is_group": 1
+        },
+        "Derechos de recompra de cartera negociada": {
+          "account_number": "1385",
+          "account_type": "Receivable"
+        },
+        "Deudas de dif\u00edcil cobro": {
+          "account_number": "1390",
+          "account_type": "Receivable"
+        },
+        "Provisiones": {
+          "account_number": "1399",
+          "account_type": "Receivable",
+          "is_group": 1
+        }
+      },
+      "Inventarios": {
+        "account_number": "14",
+        "account_type": "Stock",
+        "Materias primas": {
+          "account_number": "1405",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Productos en proceso": {
+          "account_number": "1410",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Obras de construcci\u00f3n en curso": {
+          "account_number": "1415",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Obras de urbanismo": {
+          "account_number": "1417",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Contratos en ejecuci\u00f3n": {
+          "account_number": "1420",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Cultivos en desarrollo": {
+          "account_number": "1425",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Plantaciones agr\u00edcolas": {
+          "account_number": "1428",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Productos terminados": {
+          "account_number": "1430",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Mercanc\u00edas no fabricadas por la empresa": {
+          "account_number": "1435",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Bienes ra\u00edces para la venta": {
+          "account_number": "1440",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Semovientes": {
+          "account_number": "1445",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Terrenos": {
+          "account_number": "1450",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Materiales, repuestos y accesorios": {
+          "account_number": "1455",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Envases y empaques": {
+          "account_number": "1460",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Inventarios en tr\u00e1nsito": {
+          "account_number": "1465",
+          "account_type": "Stock",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "1499",
+          "account_type": "Stock",
+          "is_group": 1
+        }
+      },
+      "Propiedades, planta y equipo": {
+        "account_number": "15",
+        "account_type": "Fixed Asset",
+        "Terrenos": {
+          "account_number": "1504",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Materiales proyectos petroleros": {
+          "account_number": "1506",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Construcciones en curso": {
+          "account_number": "1508",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Maquinaria y equipos en montaje": {
+          "account_number": "1512",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Construcciones y edificaciones": {
+          "account_number": "1516",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Maquinaria y equipo": {
+          "account_number": "1520",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Equipo de oficina": {
+          "account_number": "1524",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Equipo de computaci\u00f3n y comunicaci\u00f3n": {
+          "account_number": "1528",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Equipo m\u00e9dico-cient\u00edfico": {
+          "account_number": "1532",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Equipo de hoteles y restaurantes": {
+          "account_number": "1536",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Flota y equipo de transporte": {
+          "account_number": "1540",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Flota y equipo fluvial y/o mar\u00edtimo": {
+          "account_number": "1544",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Flota y equipo a\u00e9reo": {
+          "account_number": "1548",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Flota y equipo f\u00e9rreo": {
+          "account_number": "1552",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Acueductos, plantas y redes": {
+          "account_number": "1556",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Armamento de vigilancia": {
+          "account_number": "1560",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Envases y empaques": {
+          "account_number": "1562",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Plantaciones agr\u00edcolas y forestales": {
+          "account_number": "1564",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "V\u00edas de comunicaci\u00f3n": {
+          "account_number": "1568",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Minas y canteras": {
+          "account_number": "1572",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Pozos artesianos": {
+          "account_number": "1576",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Yacimientos": {
+          "account_number": "1580",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Semovientes": {
+          "account_number": "1584",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Propiedades, planta y equipo en tr\u00e1nsito": {
+          "account_number": "1588",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Depreciaci\u00f3n acumulada": {
+          "account_number": "1592",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Depreciaci\u00f3n diferida": {
+          "account_number": "1596",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Amortizaci\u00f3n acumulada": {
+          "account_number": "1597",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Agotamiento acumulado": {
+          "account_number": "1598",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "1599",
+          "account_type": "Fixed Asset",
+          "is_group": 1
+        }
+      },
+      "Intangibles": {
+        "account_number": "16",
+        "Cr\u00e9dito mercantil": {
+          "account_number": "1605",
+          "is_group": 1
+        },
+        "Marcas": {
+          "account_number": "1610",
+          "is_group": 1
+        },
+        "Patentes": {
+          "account_number": "1615",
+          "is_group": 1
+        },
+        "Concesiones y franquicias": {
+          "account_number": "1620",
+          "is_group": 1
+        },
+        "Derechos": {
+          "account_number": "1625",
+          "is_group": 1
+        },
+        "Know how": {
+          "account_number": "1630",
+          "is_group": 1
+        },
+        "Licencias": {
+          "account_number": "1635",
+          "is_group": 1
+        },
+        "Depreciaci\u00f3n y/o amortizaci\u00f3n acumulada": {
+          "account_number": "1698",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "1699",
+          "account_type": "Accumulated Depreciation"
+        }
+      },
+      "Diferidos": {
+        "account_number": "17",
+        "Gastos pagados por anticipado": {
+          "account_number": "1705",
+          "is_group": 1
+        },
+        "Cargos diferidos": {
+          "account_number": "1710",
+          "is_group": 1
+        },
+        "Costos de exploraci\u00f3n por amortizar": {
+          "account_number": "1715",
+          "is_group": 1
+        },
+        "Costos de explotaci\u00f3n y desarrollo": {
+          "account_number": "1720",
+          "is_group": 1
+        },
+        "Cargos por correcci\u00f3n monetaria diferida": {
+          "account_number": "1730"
+        },
+        "Amortizaci\u00f3n acumulada": {
+          "account_number": "1798",
+          "account_type": "Accumulated Depreciation",
+          "is_group": 1
+        }
+      },
+      "Otros activos": {
+        "account_number": "18",
+        "Bienes de arte y cultura": {
+          "account_number": "1805",
+          "is_group": 1
+        },
+        "Diversos": {
+          "account_number": "1895",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "1899",
+          "is_group": 1
+        }
+      },
+      "Valorizaciones": {
+        "account_number": "19",
+        "De inversiones": {
+          "account_number": "1905",
+          "is_group": 1
+        },
+        "De propiedades, planta y equipo": {
+          "account_number": "1910",
+          "is_group": 1
+        },
+        "De otros activos": {
+          "account_number": "1995",
+          "is_group": 1
+        }
+      }
+    },
+    "Pasivo": {
+      "account_number": "2",
+      "root_type": "Liability",
+      "Obligaciones financieras": {
+        "account_number": "21",
+        "Bancos nacionales": {
+          "account_number": "2105",
+          "is_group": 1
+        },
+        "Bancos del exterior": {
+          "account_number": "2110",
+          "is_group": 1
+        },
+        "Corporaciones financieras": {
+          "account_number": "2115",
+          "is_group": 1
+        },
+        "Compa\u00f1\u00edas de financiamiento comercial": {
+          "account_number": "2120",
+          "is_group": 1
+        },
+        "Corporaciones de ahorro y vivienda": {
+          "account_number": "2125",
+          "is_group": 1
+        },
+        "Entidades financieras del exterior": {
+          "account_number": "2130"
+        },
+        "Compromisos de recompra de inversiones negociadas": {
+          "account_number": "2135",
+          "is_group": 1
+        },
+        "Compromisos de recompra de cartera negociada": {
+          "account_number": "2140"
+        },
+        "Obligaciones gubernamentales": {
+          "account_number": "2145",
+          "is_group": 1
+        },
+        "Otras obligaciones": {
+          "account_number": "2195",
+          "is_group": 1
+        }
+      },
+      "Proveedores": {
+        "account_number": "22",
+        "account_type": "Payable",
+        "Nacionales": {
+          "account_number": "2205",
+          "account_type": "Payable"
+        },
+        "Del exterior": {
+          "account_number": "2210",
+          "account_type": "Payable"
+        },
+        "Cuentas corrientes comerciales": {
+          "account_number": "2215",
+          "account_type": "Payable"
+        },
+        "Casa matriz": {
+          "account_number": "2220",
+          "account_type": "Payable"
+        },
+        "Compa\u00f1\u00edas vinculadas": {
+          "account_number": "2225",
+          "account_type": "Payable"
+        }
+      },
+      "Cuentas por pagar": {
+        "account_number": "23",
+        "account_type": "Payable",
+        "Cuentas corrientes comerciales": {
+          "account_number": "2305",
+          "account_type": "Payable"
+        },
+        "A casa matriz": {
+          "account_number": "2310",
+          "account_type": "Payable"
+        },
+        "A compa\u00f1\u00edas vinculadas": {
+          "account_number": "2315",
+          "account_type": "Payable"
+        },
+        "A contratistas": {
+          "account_number": "2320",
+          "account_type": "Payable"
+        },
+        "\u00d3rdenes de compra por utilizar": {
+          "account_number": "2330",
+          "account_type": "Payable"
+        },
+        "Costos y gastos por pagar": {
+          "account_number": "2335",
+          "account_type": "Payable",
+          "is_group": 1
+        },
+        "Instalamentos por pagar": {
+          "account_number": "2340",
+          "account_type": "Payable"
+        },
+        "Acreedores oficiales": {
+          "account_number": "2345",
+          "account_type": "Payable"
+        },
+        "Regal\u00edas por pagar": {
+          "account_number": "2350",
+          "account_type": "Payable"
+        },
+        "Deudas con accionistas o socios": {
+          "account_number": "2355",
+          "account_type": "Payable",
+          "is_group": 1
+        },
+        "Deudas con directores": {
+          "account_number": "2357",
+          "account_type": "Payable"
+        },
+        "Dividendos o participaciones por pagar": {
+          "account_number": "2360",
+          "account_type": "Payable",
+          "is_group": 1
+        },
+        "Retenci\u00f3n en la fuente": {
+          "account_number": "2365",
+          "account_type": "Payable",
+          "is_group": 1
+        },
+        "Impuesto a las ventas retenido": {
+          "account_number": "2367",
+          "account_type": "Payable"
+        },
+        "Impuesto de industria y comercio retenido": {
+          "account_number": "2368",
+          "account_type": "Payable"
+        },
+        "Retenciones y aportes de n\u00f3mina": {
+          "account_number": "2370",
+          "account_type": "Payable",
+          "is_group": 1
+        },
+        "Cuotas por devolver": {
+          "account_number": "2375",
+          "account_type": "Payable"
+        },
+        "Acreedores varios": {
+          "account_number": "2380",
+          "account_type": "Payable",
+          "is_group": 1
+        }
+      },
+      "Impuestos, grav\u00e1menes y tasas": {
+        "account_number": "24",
+        "account_type": "Tax",
+        "De renta y complementarios": {
+          "account_number": "2404",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "Impuesto sobre las ventas por pagar": {
+          "account_number": "2408",
+          "account_type": "Tax"
+        },
+        "De industria y comercio": {
+          "account_number": "2412",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "A la propiedad ra\u00edz": {
+          "account_number": "2416",
+          "account_type": "Tax"
+        },
+        "Derechos sobre instrumentos p\u00fablicos": {
+          "account_number": "2420",
+          "account_type": "Tax"
+        },
+        "De valorizaci\u00f3n": {
+          "account_number": "2424",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "De turismo": {
+          "account_number": "2428",
+          "account_type": "Tax"
+        },
+        "Tasa por utilizaci\u00f3n de puertos": {
+          "account_number": "2432",
+          "account_type": "Tax"
+        },
+        "De veh\u00edculos": {
+          "account_number": "2436",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "De espect\u00e1culos p\u00fablicos": {
+          "account_number": "2440",
+          "account_type": "Tax"
+        },
+        "De hidrocarburos y minas": {
+          "account_number": "2444",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "Regal\u00edas e impuestos a la peque\u00f1a y mediana miner\u00eda": {
+          "account_number": "2448",
+          "account_type": "Tax"
+        },
+        "A las exportaciones cafeteras": {
+          "account_number": "2452",
+          "account_type": "Tax"
+        },
+        "A las importaciones": {
+          "account_number": "2456",
+          "account_type": "Tax"
+        },
+        "Cuotas de fomento": {
+          "account_number": "2460",
+          "account_type": "Tax"
+        },
+        "De licores, cervezas y cigarrillos": {
+          "account_number": "2464",
+          "account_type": "Tax",
+          "is_group": 1
+        },
+        "Al sacrificio de ganado": {
+          "account_number": "2468",
+          "account_type": "Tax"
+        },
+        "Al azar y juegos": {
+          "account_number": "2472",
+          "account_type": "Tax"
+        },
+        "Grav\u00e1menes y regal\u00edas por utilizaci\u00f3n del suelo": {
+          "account_number": "2476",
+          "account_type": "Tax"
+        },
+        "Otros": {
+          "account_number": "2495",
+          "account_type": "Tax"
+        }
+      },
+      "Obligaciones laborales": {
+        "account_number": "25",
+        "Salarios por pagar": {
+          "account_number": "2505"
+        },
+        "Cesant\u00edas consolidadas": {
+          "account_number": "2510",
+          "is_group": 1
+        },
+        "Intereses sobre cesant\u00edas": {
+          "account_number": "2515"
+        },
+        "Prima de servicios": {
+          "account_number": "2520"
+        },
+        "Vacaciones consolidadas": {
+          "account_number": "2525"
+        },
+        "Prestaciones extralegales": {
+          "account_number": "2530",
+          "is_group": 1
+        },
+        "Pensiones por pagar": {
+          "account_number": "2532"
+        },
+        "Cuotas partes pensiones de jubilaci\u00f3n": {
+          "account_number": "2535"
+        },
+        "Indemnizaciones laborales": {
+          "account_number": "2540"
+        }
+      },
+      "Pasivos estimados y provisiones": {
+        "account_number": "26",
+        "Para costos y gastos": {
+          "account_number": "2605",
+          "is_group": 1
+        },
+        "Para obligaciones laborales": {
+          "account_number": "2610",
+          "is_group": 1
+        },
+        "Para obligaciones fiscales": {
+          "account_number": "2615",
+          "is_group": 1
+        },
+        "Pensiones de jubilaci\u00f3n": {
+          "account_number": "2620",
+          "is_group": 1
+        },
+        "Para obras de urbanismo": {
+          "account_number": "2625",
+          "is_group": 1
+        },
+        "Para mantenimiento y reparaciones": {
+          "account_number": "2630",
+          "is_group": 1
+        },
+        "Para contingencias": {
+          "account_number": "2635",
+          "is_group": 1
+        },
+        "Para obligaciones de garant\u00edas": {
+          "account_number": "2640"
+        },
+        "Provisiones diversas": {
+          "account_number": "2695",
+          "is_group": 1
+        }
+      },
+      "Diferidos": {
+        "account_number": "27",
+        "Ingresos recibidos por anticipado": {
+          "account_number": "2705",
+          "is_group": 1
+        },
+        "Abonos diferidos": {
+          "account_number": "2710",
+          "is_group": 1
+        },
+        "Utilidad diferida en ventas a plazos": {
+          "account_number": "2715"
+        },
+        "Cr\u00e9dito por correcci\u00f3n monetaria diferida": {
+          "account_number": "2720"
+        },
+        "Impuestos diferidos": {
+          "account_number": "2725",
+          "is_group": 1
+        }
+      },
+      "Otros pasivos": {
+        "account_number": "28",
+        "Anticipos y avances recibidos": {
+          "account_number": "2805",
+          "is_group": 1
+        },
+        "Dep\u00f3sitos recibidos": {
+          "account_number": "2810",
+          "is_group": 1
+        },
+        "Ingresos recibidos para terceros": {
+          "account_number": "2815",
+          "is_group": 1
+        },
+        "Cuentas de operaci\u00f3n conjunta": {
+          "account_number": "2820"
+        },
+        "Retenciones a terceros sobre contratos": {
+          "account_number": "2825",
+          "is_group": 1
+        },
+        "Embargos judiciales": {
+          "account_number": "2830",
+          "is_group": 1
+        },
+        "Acreedores del sistema": {
+          "account_number": "2835",
+          "is_group": 1
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "2840"
+        },
+        "Diversos": {
+          "account_number": "2895",
+          "is_group": 1
+        }
+      },
+      "Bonos y papeles comerciales": {
+        "account_number": "29",
+        "Bonos en circulaci\u00f3n": {
+          "account_number": "2905"
+        },
+        "Bonos obligatoriamente convertibles en acciones": {
+          "account_number": "2910"
+        },
+        "Papeles comerciales": {
+          "account_number": "2915"
+        },
+        "Bonos pensionales": {
+          "account_number": "2920",
+          "is_group": 1
+        },
+        "T\u00edtulos pensionales": {
+          "account_number": "2925",
+          "is_group": 1
+        }
+      }
+    },
+    "Patrimonio": {
+      "account_number": "3",
+      "account_type": "Equity",
+      "root_type": "Equity",
+      "Capital social": {
+        "account_number": "31",
+        "account_type": "Equity",
+        "Capital suscrito y pagado": {
+          "account_number": "3105",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Aportes sociales": {
+          "account_number": "3115",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Capital asignado": {
+          "account_number": "3120",
+          "account_type": "Equity"
+        },
+        "Inversi\u00f3n suplementaria al capital asignado": {
+          "account_number": "3125",
+          "account_type": "Equity"
+        },
+        "Capital de personas naturales": {
+          "account_number": "3130",
+          "account_type": "Equity"
+        },
+        "Aportes del Estado": {
+          "account_number": "3135",
+          "account_type": "Equity"
+        },
+        "Fondo social": {
+          "account_number": "3140",
+          "account_type": "Equity"
+        }
+      },
+      "Super\u00e1vit de capital": {
+        "account_number": "32",
+        "account_type": "Equity",
+        "Prima en colocaci\u00f3n de acciones, cuotas o partes de inter\u00e9s social": {
+          "account_number": "3205",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Donaciones": {
+          "account_number": "3210",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Cr\u00e9dito mercantil": {
+          "account_number": "3215",
+          "account_type": "Equity"
+        },
+        "Know how": {
+          "account_number": "3220",
+          "account_type": "Equity"
+        },
+        "Super\u00e1vit m\u00e9todo de participaci\u00f3n": {
+          "account_number": "3225",
+          "account_type": "Equity",
+          "is_group": 1
+        }
+      },
+      "Reservas": {
+        "account_number": "33",
+        "account_type": "Equity",
+        "Reservas obligatorias": {
+          "account_number": "3305",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Reservas estatutarias": {
+          "account_number": "3310",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Reservas ocasionales": {
+          "account_number": "3315",
+          "account_type": "Equity",
+          "is_group": 1
+        }
+      },
+      "Revalorizaci\u00f3n del patrimonio": {
+        "account_number": "34",
+        "account_type": "Equity",
+        "Ajustes por inflaci\u00f3n": {
+          "account_number": "3405",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "Saneamiento fiscal": {
+          "account_number": "3410",
+          "account_type": "Equity"
+        },
+        "Ajustes por inflaci\u00f3n Decreto 3019 de 1989": {
+          "account_number": "3415",
+          "account_type": "Equity"
+        }
+      },
+      "Dividendos o participaciones decretados en acciones, cuotas o partes de inter\u00e9s social": {
+        "account_number": "35",
+        "account_type": "Equity",
+        "Dividendos decretados en acciones": {
+          "account_number": "3505",
+          "account_type": "Equity"
+        },
+        "Participaciones decretadas en cuotas o partes de inter\u00e9s social": {
+          "account_number": "3510",
+          "account_type": "Equity"
+        }
+      },
+      "Resultados del ejercicio": {
+        "account_number": "36",
+        "account_type": "Equity",
+        "Utilidad del ejercicio": {
+          "account_number": "3605",
+          "account_type": "Equity"
+        },
+        "P\u00e9rdida del ejercicio": {
+          "account_number": "3610",
+          "account_type": "Equity"
+        }
+      },
+      "Resultados de ejercicios anteriores": {
+        "account_number": "37",
+        "account_type": "Equity",
+        "Utilidades acumuladas": {
+          "account_number": "3705",
+          "account_type": "Equity"
+        },
+        "P\u00e9rdidas acumuladas": {
+          "account_number": "3710",
+          "account_type": "Equity"
+        }
+      },
+      "Super\u00e1vit por valorizaciones": {
+        "account_number": "38",
+        "account_type": "Equity",
+        "De inversiones": {
+          "account_number": "3805",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "De propiedades, planta y equipo": {
+          "account_number": "3810",
+          "account_type": "Equity",
+          "is_group": 1
+        },
+        "De otros activos": {
+          "account_number": "3895",
+          "account_type": "Equity",
+          "is_group": 1
+        }
+      }
+    },
+    "Ingresos": {
+      "account_number": "4",
+      "account_type": "Income Account",
+      "root_type": "Income",
+      "Operacionales": {
+        "account_number": "41",
+        "account_type": "Income Account",
+        "Agricultura, ganader\u00eda, caza y silvicultura": {
+          "account_number": "4105",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Pesca": {
+          "account_number": "4110",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Explotaci\u00f3n de minas y canteras": {
+          "account_number": "4115",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Industrias manufactureras": {
+          "account_number": "4120",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Suministro de electricidad, gas y agua": {
+          "account_number": "4125",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Construcci\u00f3n": {
+          "account_number": "4130",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Comercio al por mayor y al por menor": {
+          "account_number": "4135",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Hoteles y restaurantes": {
+          "account_number": "4140",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Transporte, almacenamiento y comunicaciones": {
+          "account_number": "4145",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Actividad financiera": {
+          "account_number": "4150",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Actividades inmobiliarias, empresariales y de alquiler": {
+          "account_number": "4155",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Ense\u00f1anza": {
+          "account_number": "4160",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Servicios sociales y de salud": {
+          "account_number": "4165",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Otras actividades de servicios comunitarios, sociales y personales": {
+          "account_number": "4170",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Devoluciones  en ventas (DB)": {
+          "account_number": "4175",
+          "account_type": "Income Account",
+          "is_group": 1
+        }
+      },
+      "No operacionales": {
+        "account_number": "42",
+        "account_type": "Income Account",
+        "Otras ventas": {
+          "account_number": "4205",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Financieros": {
+          "account_number": "4210",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Dividendos y participaciones": {
+          "account_number": "4215",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Ingresos m\u00e9todo de participaci\u00f3n": {
+          "account_number": "4218",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Arrendamientos": {
+          "account_number": "4220",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Comisiones": {
+          "account_number": "4225",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Honorarios": {
+          "account_number": "4230",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Servicios": {
+          "account_number": "4235",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Utilidad en venta de inversiones": {
+          "account_number": "4240",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Utilidad en venta de propiedades, planta y equipo": {
+          "account_number": "4245",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Utilidad en venta de otros bienes": {
+          "account_number": "4248",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Recuperaciones": {
+          "account_number": "4250",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Indemnizaciones": {
+          "account_number": "4255",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Participaciones en concesiones": {
+          "account_number": "4260",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Ingresos de ejercicios anteriores": {
+          "account_number": "4265",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Devoluciones en otras ventas (DB)": {
+          "account_number": "4275",
+          "account_type": "Income Account",
+          "is_group": 1
+        },
+        "Diversos": {
+          "account_number": "4295",
+          "account_type": "Income Account",
+          "is_group": 1
+        }
+      },
+      "Ajustes por inflaci\u00f3n": {
+        "account_number": "47",
+        "account_type": "Income Account",
+        "Correcci\u00f3n monetaria": {
+          "account_number": "4705",
+          "account_type": "Income Account",
+          "is_group": 1
+        }
+      }
+    },
+    "Gastos": {
+      "account_number": "5",
+      "account_type": "Expense Account",
+      "root_type": "Expense",
+      "Operacionales de administraci\u00f3n": {
+        "account_number": "51",
+        "account_type": "Expense Account",
+        "Gastos de personal": {
+          "account_number": "5105",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Honorarios": {
+          "account_number": "5110",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Impuestos": {
+          "account_number": "5115",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Arrendamientos": {
+          "account_number": "5120",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Contribuciones y afiliaciones": {
+          "account_number": "5125",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Seguros": {
+          "account_number": "5130",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Servicios": {
+          "account_number": "5135",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos legales": {
+          "account_number": "5140",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Mantenimiento y reparaciones": {
+          "account_number": "5145",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Adecuaci\u00f3n e instalaci\u00f3n": {
+          "account_number": "5150",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos de viaje": {
+          "account_number": "5155",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Depreciaciones": {
+          "account_number": "5160",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Amortizaciones": {
+          "account_number": "5165",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Diversos": {
+          "account_number": "5195",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "5199",
+          "account_type": "Expense Account",
+          "is_group": 1
+        }
+      },
+      "Operacionales de ventas": {
+        "account_number": "52",
+        "account_type": "Expense Account",
+        "Gastos de personal": {
+          "account_number": "5205",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Honorarios": {
+          "account_number": "5210",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Impuestos": {
+          "account_number": "5215",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Arrendamientos": {
+          "account_number": "5220",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Contribuciones y afiliaciones": {
+          "account_number": "5225",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Seguros": {
+          "account_number": "5230",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Servicios": {
+          "account_number": "5235",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos legales": {
+          "account_number": "5240",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Mantenimiento y reparaciones": {
+          "account_number": "5245",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Adecuaci\u00f3n e instalaci\u00f3n": {
+          "account_number": "5250",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos de viaje": {
+          "account_number": "5255",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Depreciaciones": {
+          "account_number": "5260",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Amortizaciones": {
+          "account_number": "5265",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Financieros-reajuste del sistema": {
+          "account_number": "5270",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "P\u00e9rdidas m\u00e9todo de participaci\u00f3n": {
+          "account_number": "5275",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Diversos": {
+          "account_number": "5295",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Provisiones": {
+          "account_number": "5299",
+          "account_type": "Expense Account",
+          "is_group": 1
+        }
+      },
+      "No operacionales": {
+        "account_number": "53",
+        "account_type": "Expense Account",
+        "Financieros": {
+          "account_number": "5305",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "P\u00e9rdida en venta y retiro de bienes": {
+          "account_number": "5310",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "P\u00e9rdidas m\u00e9todo de participaci\u00f3n": {
+          "account_number": "5313",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos extraordinarios": {
+          "account_number": "5315",
+          "account_type": "Expense Account",
+          "is_group": 1
+        },
+        "Gastos diversos": {
+          "account_number": "5395",
+          "account_type": "Expense Account",
+          "is_group": 1
+        }
+      },
+      "Impuesto de renta y complementarios": {
+        "account_number": "54",
+        "account_type": "Expense Account",
+        "Impuesto de renta y complementarios": {
+          "account_number": "5405",
+          "account_type": "Expense Account",
+          "is_group": 1
+        }
+      },
+      "Ganancias y p\u00e9rdidas": {
+        "account_number": "59",
+        "account_type": "Expense Account",
+        "Ganancias y p\u00e9rdidas": {
+          "account_number": "5905",
+          "account_type": "Expense Account",
+          "is_group": 1
+        }
+      }
+    },
+    "Costos de ventas": {
+      "account_number": "6",
+      "account_type": "Cost of Goods Sold",
+      "root_type": "Expense",
+      "Costo de ventas y de prestaci\u00f3n de servicios": {
+        "account_number": "61",
+        "account_type": "Cost of Goods Sold",
+        "Agricultura, ganader\u00eda, caza y silvicultura": {
+          "account_number": "6105",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Pesca": {
+          "account_number": "6110",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Explotaci\u00f3n de minas y canteras": {
+          "account_number": "6115",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Industrias manufactureras": {
+          "account_number": "6120",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Suministro de electricidad, gas y agua": {
+          "account_number": "6125",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Construcci\u00f3n": {
+          "account_number": "6130",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Comercio al por mayor y al por menor": {
+          "account_number": "6135",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Hoteles y restaurantes": {
+          "account_number": "6140",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Transporte, almacenamiento y comunicaciones": {
+          "account_number": "6145",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Actividad financiera": {
+          "account_number": "6150",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Actividades inmobiliarias, empresariales y de alquiler": {
+          "account_number": "6155",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Ense\u00f1anza": {
+          "account_number": "6160",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Servicios sociales y de salud": {
+          "account_number": "6165",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Otras actividades de servicios comunitarios, sociales y personales": {
+          "account_number": "6170",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        }
+      },
+      "Compras": {
+        "account_number": "62",
+        "account_type": "Cost of Goods Sold",
+        "De mercanc\u00edas": {
+          "account_number": "6205",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "De materias primas": {
+          "account_number": "6210",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "De materiales indirectos": {
+          "account_number": "6215",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Compra de energ\u00eda": {
+          "account_number": "6220",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        },
+        "Devoluciones en compras (CR)": {
+          "account_number": "6225",
+          "account_type": "Cost of Goods Sold",
+          "is_group": 1
+        }
+      }
+    },
+    "Costos de producci\u00f3n o de operaci\u00f3n": {
+      "account_number": "7",
+      "account_type": "Cost of Goods Sold",
+      "root_type": "Expense",
+      "Materia prima": {
+        "account_number": "71",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Mano de obra directa": {
+        "account_number": "72",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Costos indirectos": {
+        "account_number": "73",
+        "account_type": "Cost of Goods Sold"
+      },
+      "Contratos de servicios": {
+        "account_number": "74",
+        "account_type": "Cost of Goods Sold"
+      }
+    },
+    "Cuentas de orden deudoras": {
+      "account_number": "8",
+      "root_type": "Asset",
+      "Derechos contingentes": {
+        "account_number": "81",
+        "Bienes y valores entregados en custodia": {
+          "account_number": "8105",
+          "is_group": 1
+        },
+        "Bienes y valores entregados en garant\u00eda": {
+          "account_number": "8110",
+          "is_group": 1
+        },
+        "Bienes y valores en poder de terceros": {
+          "account_number": "8115",
+          "is_group": 1
+        },
+        "Litigios y/o demandas": {
+          "account_number": "8120",
+          "is_group": 1
+        },
+        "Promesas de compraventa": {
+          "account_number": "8125"
+        },
+        "Diversas": {
+          "account_number": "8195",
+          "is_group": 1
+        }
+      },
+      "Deudoras fiscales": {
+        "account_number": "82"
+      },
+      "Deudoras de control": {
+        "account_number": "83",
+        "Bienes recibidos en arrendamiento financiero": {
+          "account_number": "8305",
+          "is_group": 1
+        },
+        "T\u00edtulos de inversi\u00f3n no colocados": {
+          "account_number": "8310",
+          "is_group": 1
+        },
+        "Propiedades, planta y equipo totalmente depreciados, agotados y/o amortizados": {
+          "account_number": "8315",
+          "is_group": 1
+        },
+        "Cr\u00e9ditos a favor no utilizados": {
+          "account_number": "8320",
+          "is_group": 1
+        },
+        "Activos castigados": {
+          "account_number": "8325",
+          "is_group": 1
+        },
+        "T\u00edtulos de inversi\u00f3n amortizados": {
+          "account_number": "8330",
+          "is_group": 1
+        },
+        "Capitalizaci\u00f3n por revalorizaci\u00f3n de patrimonio": {
+          "account_number": "8335"
+        },
+        "Otras cuentas deudoras de control": {
+          "account_number": "8395",
+          "is_group": 1
+        },
+        "Ajustes por inflaci\u00f3n activos": {
+          "account_number": "8399",
+          "is_group": 1
+        }
+      },
+      "Derechos contingentes por contra (CR)": {
+        "account_number": "84"
+      },
+      "Deudoras fiscales por contra (CR)": {
+        "account_number": "85"
+      },
+      "Deudoras de control por contra (CR)": {
+        "account_number": "86"
+      }
+    },
+    "Cuentas de orden acreedoras": {
+      "account_number": "9",
+      "root_type": "Liability",
+      "Responsabilidades contingentes": {
+        "account_number": "91",
+        "Bienes y valores recibidos en custodia": {
+          "account_number": "9105",
+          "is_group": 1
+        },
+        "Bienes y valores recibidos en garant\u00eda": {
+          "account_number": "9110",
+          "is_group": 1
+        },
+        "Bienes y valores recibidos de terceros": {
+          "account_number": "9115",
+          "is_group": 1
+        },
+        "Litigios y/o demandas": {
+          "account_number": "9120",
+          "is_group": 1
+        },
+        "Promesas de compraventa": {
+          "account_number": "9125"
+        },
+        "Contratos de administraci\u00f3n delegada": {
+          "account_number": "9130"
+        },
+        "Cuentas en participaci\u00f3n": {
+          "account_number": "9135"
+        },
+        "Otras responsabilidades contingentes": {
+          "account_number": "9195"
+        }
+      },
+      "Acreedoras fiscales": {
+        "account_number": "92"
+      },
+      "Acreedoras de control": {
+        "account_number": "93",
+        "Contratos de arrendamiento financiero": {
+          "account_number": "9305",
+          "is_group": 1
+        },
+        "Otras cuentas de orden acreedoras de control": {
+          "account_number": "9395",
+          "is_group": 1
+        },
+        "Ajustes por inflaci\u00f3n patrimonio": {
+          "account_number": "9399",
+          "is_group": 1
+        }
+      },
+      "Responsabilidades contingentes por contra (DB)": {
+        "account_number": "94"
+      },
+      "Acreedoras fiscales por contra (DB)": {
+        "account_number": "95"
+      },
+      "Acreedoras de control por contra (DB)": {
+        "account_number": "96"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index ce1ed33..81ff6a5 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -50,13 +50,15 @@
 		if frappe.flags.in_test:
 			make_dimension_in_accounting_doctypes(doc=self)
 		else:
-			frappe.enqueue(make_dimension_in_accounting_doctypes, doc=self, queue="long")
+			frappe.enqueue(
+				make_dimension_in_accounting_doctypes, doc=self, queue="long", enqueue_after_commit=True
+			)
 
 	def on_trash(self):
 		if frappe.flags.in_test:
 			delete_accounting_dimension(doc=self)
 		else:
-			frappe.enqueue(delete_accounting_dimension, doc=self, queue="long")
+			frappe.enqueue(delete_accounting_dimension, doc=self, queue="long", enqueue_after_commit=True)
 
 	def set_fieldname_and_label(self):
 		if not self.label:
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index c59d90d..7cd498d 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -34,6 +34,7 @@
   "book_tax_discount_loss",
   "print_settings",
   "show_inclusive_tax_in_print",
+  "show_taxes_as_table_in_print",
   "column_break_12",
   "show_payment_schedule_in_print",
   "currency_exchange_section",
@@ -60,7 +61,10 @@
   "column_break_25",
   "frozen_accounts_modifier",
   "tab_break_dpet",
-  "show_balance_in_coa"
+  "show_balance_in_coa",
+  "banking_tab",
+  "enable_party_matching",
+  "enable_fuzzy_matching"
  ],
  "fields": [
   {
@@ -376,6 +380,32 @@
    "fieldname": "auto_reconcile_payments",
    "fieldtype": "Check",
    "label": "Auto Reconcile Payments"
+  },
+  {
+   "default": "0",
+   "fieldname": "show_taxes_as_table_in_print",
+   "fieldtype": "Check",
+   "label": "Show Taxes as Table in Print"
+  },
+  {
+   "fieldname": "banking_tab",
+   "fieldtype": "Tab Break",
+   "label": "Banking"
+  },
+  {
+   "default": "0",
+   "description": "Auto match and set the Party in Bank Transactions",
+   "fieldname": "enable_party_matching",
+   "fieldtype": "Check",
+   "label": "Enable Automatic Party Matching"
+  },
+  {
+   "default": "0",
+   "depends_on": "enable_party_matching",
+   "description": "Approximately match the description/party name against parties",
+   "fieldname": "enable_fuzzy_matching",
+   "fieldtype": "Check",
+   "label": "Enable Fuzzy Matching"
   }
  ],
  "icon": "icon-cog",
@@ -383,7 +413,7 @@
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-06-01 15:42:44.912316",
+ "modified": "2023-06-15 16:35:45.123456",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py
index b91f0f9..363a277 100644
--- a/erpnext/accounts/doctype/bank_account/bank_account.py
+++ b/erpnext/accounts/doctype/bank_account/bank_account.py
@@ -70,7 +70,6 @@
 	return doc
 
 
-@frappe.whitelist()
 def get_party_bank_account(party_type, party):
 	return frappe.db.get_value(party_type, party, "default_bank_account")
 
diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.js b/erpnext/accounts/doctype/bank_clearance/bank_clearance.js
index 71f2dcc..7af635b 100644
--- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.js
+++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.js
@@ -41,7 +41,7 @@
 			frm.trigger("get_payment_entries")
 		);
 
-		frm.change_custom_button_type('Get Payment Entries', null, 'primary');
+		frm.change_custom_button_type(__('Get Payment Entries'), null, 'primary');
 	},
 
 	update_clearance_date: function(frm) {
@@ -53,8 +53,8 @@
 				frm.refresh_fields();
 
 				if (!frm.doc.payment_entries.length) {
-					frm.change_custom_button_type('Get Payment Entries', null, 'primary');
-					frm.change_custom_button_type('Update Clearance Date', null, 'default');
+					frm.change_custom_button_type(__('Get Payment Entries'), null, 'primary');
+					frm.change_custom_button_type(__('Update Clearance Date'), null, 'default');
 				}
 			}
 		});
@@ -72,8 +72,8 @@
 						frm.trigger("update_clearance_date")
 					);
 
-					frm.change_custom_button_type('Get Payment Entries', null, 'default');
-					frm.change_custom_button_type('Update Clearance Date', null, 'primary');
+					frm.change_custom_button_type(__('Get Payment Entries'), null, 'default');
+					frm.change_custom_button_type(__('Update Clearance Date'), null, 'primary');
 				}
 			}
 		});
diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
index d977261..0647a5c 100644
--- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
+++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js
@@ -81,7 +81,7 @@
 		frm.add_custom_button(__('Get Unreconciled Entries'), function() {
 			frm.trigger("make_reconciliation_tool");
 		});
-		frm.change_custom_button_type('Get Unreconciled Entries', null, 'primary');
+		frm.change_custom_button_type(__('Get Unreconciled Entries'), null, 'primary');
 
 	},
 
diff --git a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py
new file mode 100644
index 0000000..5d94a08
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py
@@ -0,0 +1,178 @@
+from typing import Tuple, Union
+
+import frappe
+from frappe.utils import flt
+from rapidfuzz import fuzz, process
+
+
+class AutoMatchParty:
+	"""
+	Matches by Account/IBAN and then by Party Name/Description sequentially.
+	Returns when a result is obtained.
+
+	Result (if present) is of the form: (Party Type, Party,)
+	"""
+
+	def __init__(self, **kwargs) -> None:
+		self.__dict__.update(kwargs)
+
+	def get(self, key):
+		return self.__dict__.get(key, None)
+
+	def match(self) -> Union[Tuple, None]:
+		result = None
+		result = AutoMatchbyAccountIBAN(
+			bank_party_account_number=self.bank_party_account_number,
+			bank_party_iban=self.bank_party_iban,
+			deposit=self.deposit,
+		).match()
+
+		fuzzy_matching_enabled = frappe.db.get_single_value("Accounts Settings", "enable_fuzzy_matching")
+		if not result and fuzzy_matching_enabled:
+			result = AutoMatchbyPartyNameDescription(
+				bank_party_name=self.bank_party_name, description=self.description, deposit=self.deposit
+			).match()
+
+		return result
+
+
+class AutoMatchbyAccountIBAN:
+	def __init__(self, **kwargs) -> None:
+		self.__dict__.update(kwargs)
+
+	def get(self, key):
+		return self.__dict__.get(key, None)
+
+	def match(self):
+		if not (self.bank_party_account_number or self.bank_party_iban):
+			return None
+
+		result = self.match_account_in_party()
+		return result
+
+	def match_account_in_party(self) -> Union[Tuple, None]:
+		"""Check if there is a IBAN/Account No. match in Customer/Supplier/Employee"""
+		result = None
+		parties = get_parties_in_order(self.deposit)
+		or_filters = self.get_or_filters()
+
+		for party in parties:
+			party_result = frappe.db.get_all(
+				"Bank Account", or_filters=or_filters, pluck="party", limit_page_length=1
+			)
+
+			if party == "Employee" and not party_result:
+				# Search in Bank Accounts first for Employee, and then Employee record
+				if "bank_account_no" in or_filters:
+					or_filters["bank_ac_no"] = or_filters.pop("bank_account_no")
+
+				party_result = frappe.db.get_all(
+					party, or_filters=or_filters, pluck="name", limit_page_length=1
+				)
+
+			if party_result:
+				result = (
+					party,
+					party_result[0],
+				)
+				break
+
+		return result
+
+	def get_or_filters(self) -> dict:
+		or_filters = {}
+		if self.bank_party_account_number:
+			or_filters["bank_account_no"] = self.bank_party_account_number
+
+		if self.bank_party_iban:
+			or_filters["iban"] = self.bank_party_iban
+
+		return or_filters
+
+
+class AutoMatchbyPartyNameDescription:
+	def __init__(self, **kwargs) -> None:
+		self.__dict__.update(kwargs)
+
+	def get(self, key):
+		return self.__dict__.get(key, None)
+
+	def match(self) -> Union[Tuple, None]:
+		# fuzzy search by customer/supplier & employee
+		if not (self.bank_party_name or self.description):
+			return None
+
+		result = self.match_party_name_desc_in_party()
+		return result
+
+	def match_party_name_desc_in_party(self) -> Union[Tuple, None]:
+		"""Fuzzy search party name and/or description against parties in the system"""
+		result = None
+		parties = get_parties_in_order(self.deposit)
+
+		for party in parties:
+			filters = {"status": "Active"} if party == "Employee" else {"disabled": 0}
+			names = frappe.get_all(party, filters=filters, pluck=party.lower() + "_name")
+
+			for field in ["bank_party_name", "description"]:
+				if not self.get(field):
+					continue
+
+				result, skip = self.fuzzy_search_and_return_result(party, names, field)
+				if result or skip:
+					break
+
+			if result or skip:
+				# Skip If: It was hard to distinguish between close matches and so match is None
+				# OR if the right match was found
+				break
+
+		return result
+
+	def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]:
+		skip = False
+		result = process.extract(query=self.get(field), choices=names, scorer=fuzz.token_set_ratio)
+		party_name, skip = self.process_fuzzy_result(result)
+
+		if not party_name:
+			return None, skip
+
+		return (
+			party,
+			party_name,
+		), skip
+
+	def process_fuzzy_result(self, result: Union[list, None]):
+		"""
+		If there are multiple valid close matches return None as result may be faulty.
+		Return the result only if one accurate match stands out.
+
+		Returns: Result, Skip (whether or not to discontinue matching)
+		"""
+		PARTY, SCORE, CUTOFF = 0, 1, 80
+
+		if not result or not len(result):
+			return None, False
+
+		first_result = result[0]
+		if len(result) == 1:
+			return (first_result[PARTY] if first_result[SCORE] > CUTOFF else None), True
+
+		second_result = result[1]
+		if first_result[SCORE] > CUTOFF:
+			# If multiple matches with the same score, return None but discontinue matching
+			# Matches were found but were too close to distinguish between
+			if first_result[SCORE] == second_result[SCORE]:
+				return None, True
+
+			return first_result[PARTY], True
+		else:
+			return None, False
+
+
+def get_parties_in_order(deposit: float) -> list:
+	parties = ["Supplier", "Employee", "Customer"]  # most -> least likely to receive
+	if flt(deposit) > 0:
+		parties = ["Customer", "Supplier", "Employee"]  # most -> least likely to pay
+
+	return parties
diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.json b/erpnext/accounts/doctype/bank_transaction/bank_transaction.json
index 768d2f0..b32022e 100644
--- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.json
+++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.json
@@ -33,7 +33,11 @@
   "unallocated_amount",
   "party_section",
   "party_type",
-  "party"
+  "party",
+  "column_break_3czf",
+  "bank_party_name",
+  "bank_party_account_number",
+  "bank_party_iban"
  ],
  "fields": [
   {
@@ -63,7 +67,7 @@
    "fieldtype": "Select",
    "in_standard_filter": 1,
    "label": "Status",
-   "options": "\nPending\nSettled\nUnreconciled\nReconciled"
+   "options": "\nPending\nSettled\nUnreconciled\nReconciled\nCancelled"
   },
   {
    "fieldname": "bank_account",
@@ -202,11 +206,30 @@
    "fieldtype": "Data",
    "label": "Transaction Type",
    "length": 50
+  },
+  {
+   "fieldname": "column_break_3czf",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "bank_party_name",
+   "fieldtype": "Data",
+   "label": "Party Name/Account Holder (Bank Statement)"
+  },
+  {
+   "fieldname": "bank_party_iban",
+   "fieldtype": "Data",
+   "label": "Party IBAN (Bank Statement)"
+  },
+  {
+   "fieldname": "bank_party_account_number",
+   "fieldtype": "Data",
+   "label": "Party Account No. (Bank Statement)"
   }
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2022-05-29 18:36:50.475964",
+ "modified": "2023-06-06 13:58:12.821411",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Bank Transaction",
@@ -260,4 +283,4 @@
  "states": [],
  "title_field": "bank_account",
  "track_changes": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
index b441af9..f82337f 100644
--- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
+++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py
@@ -15,6 +15,9 @@
 		self.clear_linked_payment_entries()
 		self.set_status()
 
+		if frappe.db.get_single_value("Accounts Settings", "enable_party_matching"):
+			self.auto_set_party()
+
 	_saving_flag = False
 
 	# nosemgrep: frappe-semgrep-rules.rules.frappe-modifying-but-not-comitting
@@ -146,6 +149,26 @@
 			payment_entry.payment_document, payment_entry.payment_entry, clearance_date, self
 		)
 
+	def auto_set_party(self):
+		from erpnext.accounts.doctype.bank_transaction.auto_match_party import AutoMatchParty
+
+		if self.party_type and self.party:
+			return
+
+		result = AutoMatchParty(
+			bank_party_account_number=self.bank_party_account_number,
+			bank_party_iban=self.bank_party_iban,
+			bank_party_name=self.bank_party_name,
+			description=self.description,
+			deposit=self.deposit,
+		).match()
+
+		if result:
+			party_type, party = result
+			frappe.db.set_value(
+				"Bank Transaction", self.name, field={"party_type": party_type, "party": party}
+			)
+
 
 @frappe.whitelist()
 def get_doctypes_for_bank_reconciliation():
diff --git a/erpnext/accounts/doctype/bank_transaction/test_auto_match_party.py b/erpnext/accounts/doctype/bank_transaction/test_auto_match_party.py
new file mode 100644
index 0000000..36ef1fc
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_transaction/test_auto_match_party.py
@@ -0,0 +1,151 @@
+# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+import frappe
+from frappe.tests.utils import FrappeTestCase
+from frappe.utils import nowdate
+
+from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account
+
+
+class TestAutoMatchParty(FrappeTestCase):
+	@classmethod
+	def setUpClass(cls):
+		create_bank_account()
+		frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 1)
+		frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 1)
+		return super().setUpClass()
+
+	@classmethod
+	def tearDownClass(cls):
+		frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 0)
+		frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 0)
+
+	def test_match_by_account_number(self):
+		create_supplier_for_match(account_no="000000003716541159")
+		doc = create_bank_transaction(
+			withdrawal=1200,
+			transaction_id="562213b0ca1bf838dab8f2c6a39bbc3b",
+			account_no="000000003716541159",
+			iban="DE02000000003716541159",
+		)
+
+		self.assertEqual(doc.party_type, "Supplier")
+		self.assertEqual(doc.party, "John Doe & Co.")
+
+	def test_match_by_iban(self):
+		create_supplier_for_match(iban="DE02000000003716541159")
+		doc = create_bank_transaction(
+			withdrawal=1200,
+			transaction_id="c5455a224602afaa51592a9d9250600d",
+			account_no="000000003716541159",
+			iban="DE02000000003716541159",
+		)
+
+		self.assertEqual(doc.party_type, "Supplier")
+		self.assertEqual(doc.party, "John Doe & Co.")
+
+	def test_match_by_party_name(self):
+		create_supplier_for_match(supplier_name="Jackson Ella W.")
+		doc = create_bank_transaction(
+			withdrawal=1200,
+			transaction_id="1f6f661f347ff7b1ea588665f473adb1",
+			party_name="Ella Jackson",
+			iban="DE04000000003716545346",
+		)
+		self.assertEqual(doc.party_type, "Supplier")
+		self.assertEqual(doc.party, "Jackson Ella W.")
+
+	def test_match_by_description(self):
+		create_supplier_for_match(supplier_name="Microsoft")
+		doc = create_bank_transaction(
+			description="Auftraggeber: microsoft payments Buchungstext: msft ..e3006b5hdy. ref. j375979555927627/5536",
+			withdrawal=1200,
+			transaction_id="8df880a2d09c3bed3fea358ca5168c5a",
+			party_name="",
+		)
+		self.assertEqual(doc.party_type, "Supplier")
+		self.assertEqual(doc.party, "Microsoft")
+
+	def test_skip_match_if_multiple_close_results(self):
+		create_supplier_for_match(supplier_name="Adithya Medical & General Stores")
+		create_supplier_for_match(supplier_name="Adithya Medical And General Stores")
+
+		doc = create_bank_transaction(
+			description="Paracetamol Consignment, SINV-0009",
+			withdrawal=24.85,
+			transaction_id="3a1da4ee2dc5a980138d56ef3460cbd9",
+			party_name="Adithya Medical & General",
+		)
+
+		# Mapping is skipped as both Supplier names have the same match score
+		self.assertEqual(doc.party_type, None)
+		self.assertEqual(doc.party, None)
+
+
+def create_supplier_for_match(supplier_name="John Doe & Co.", iban=None, account_no=None):
+	if frappe.db.exists("Supplier", {"supplier_name": supplier_name}):
+		# Update related Bank Account details
+		if not (iban or account_no):
+			return
+
+		frappe.db.set_value(
+			dt="Bank Account",
+			dn={"party": supplier_name},
+			field={"iban": iban, "bank_account_no": account_no},
+		)
+		return
+
+	# Create Supplier and Bank Account for the same
+	supplier = frappe.new_doc("Supplier")
+	supplier.supplier_name = supplier_name
+	supplier.supplier_group = "Services"
+	supplier.supplier_type = "Company"
+	supplier.insert()
+
+	if not frappe.db.exists("Bank", "TestBank"):
+		bank = frappe.new_doc("Bank")
+		bank.bank_name = "TestBank"
+		bank.insert(ignore_if_duplicate=True)
+
+	if not frappe.db.exists("Bank Account", supplier.name + " - " + "TestBank"):
+		bank_account = frappe.new_doc("Bank Account")
+		bank_account.account_name = supplier.name
+		bank_account.bank = "TestBank"
+		bank_account.iban = iban
+		bank_account.bank_account_no = account_no
+		bank_account.party_type = "Supplier"
+		bank_account.party = supplier.name
+		bank_account.insert()
+
+
+def create_bank_transaction(
+	description=None,
+	withdrawal=0,
+	deposit=0,
+	transaction_id=None,
+	party_name=None,
+	account_no=None,
+	iban=None,
+):
+	doc = frappe.new_doc("Bank Transaction")
+	doc.update(
+		{
+			"doctype": "Bank Transaction",
+			"description": description or "1512567 BG/000002918 OPSKATTUZWXXX AT776000000098709837 Herr G",
+			"date": nowdate(),
+			"withdrawal": withdrawal,
+			"deposit": deposit,
+			"currency": "INR",
+			"bank_account": "Checking Account - Citi Bank",
+			"transaction_id": transaction_id,
+			"bank_party_name": party_name,
+			"bank_party_account_number": account_no,
+			"bank_party_iban": iban,
+		}
+	)
+	doc.insert()
+	doc.submit()
+	doc.reload()
+
+	return doc
diff --git a/erpnext/accounts/doctype/dunning/dunning.json b/erpnext/accounts/doctype/dunning/dunning.json
index d55bfd1..2a32b99 100644
--- a/erpnext/accounts/doctype/dunning/dunning.json
+++ b/erpnext/accounts/doctype/dunning/dunning.json
@@ -245,6 +245,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -315,10 +316,11 @@
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2020-08-03 18:55:43.683053",
+ "modified": "2023-06-03 16:24:01.677026",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Dunning",
+ "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
   {
@@ -365,6 +367,7 @@
  ],
  "sort_field": "modified",
  "sort_order": "ASC",
+ "states": [],
  "title_field": "customer_name",
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
index f72ecc9..1ef5c83 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js
@@ -35,6 +35,21 @@
 		}
 	},
 
+	validate_rounding_loss: function(frm) {
+		let allowance = frm.doc.rounding_loss_allowance;
+		if (!(allowance >= 0 && allowance < 1)) {
+			frappe.throw(__("Rounding Loss Allowance should be between 0 and 1"));
+		}
+	},
+
+	rounding_loss_allowance: function(frm) {
+		frm.events.validate_rounding_loss(frm);
+	},
+
+	validate: function(frm) {
+		frm.events.validate_rounding_loss(frm);
+	},
+
 	get_entries: function(frm, account) {
 		frappe.call({
 			method: "get_accounts_data",
@@ -126,7 +141,8 @@
 			company: frm.doc.company,
 			posting_date: frm.doc.posting_date,
 			party_type: row.party_type,
-			party: row.party
+			party: row.party,
+			rounding_loss_allowance: frm.doc.rounding_loss_allowance
 		},
 		callback: function(r){
 			$.extend(row, r.message);
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json
index 0d198ca..79428d5 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.json
@@ -8,6 +8,7 @@
  "engine": "InnoDB",
  "field_order": [
   "posting_date",
+  "rounding_loss_allowance",
   "column_break_2",
   "company",
   "section_break_4",
@@ -96,11 +97,19 @@
   {
    "fieldname": "column_break_10",
    "fieldtype": "Column Break"
+  },
+  {
+   "default": "0.05",
+   "description": "Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...}\nEx: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account",
+   "fieldname": "rounding_loss_allowance",
+   "fieldtype": "Float",
+   "label": "Rounding Loss Allowance",
+   "precision": "9"
   }
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2022-12-29 19:38:24.416529",
+ "modified": "2023-06-20 07:29:06.972434",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Exchange Rate Revaluation",
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
index b528ee5..598db64 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py
@@ -18,8 +18,13 @@
 
 class ExchangeRateRevaluation(Document):
 	def validate(self):
+		self.validate_rounding_loss_allowance()
 		self.set_total_gain_loss()
 
+	def validate_rounding_loss_allowance(self):
+		if not (self.rounding_loss_allowance >= 0 and self.rounding_loss_allowance < 1):
+			frappe.throw(_("Rounding Loss Allowance should be between 0 and 1"))
+
 	def set_total_gain_loss(self):
 		total_gain_loss = 0
 
@@ -92,7 +97,12 @@
 	def get_accounts_data(self):
 		self.validate_mandatory()
 		account_details = self.get_account_balance_from_gle(
-			company=self.company, posting_date=self.posting_date, account=None, party_type=None, party=None
+			company=self.company,
+			posting_date=self.posting_date,
+			account=None,
+			party_type=None,
+			party=None,
+			rounding_loss_allowance=self.rounding_loss_allowance,
 		)
 		accounts_with_new_balance = self.calculate_new_account_balance(
 			self.company, self.posting_date, account_details
@@ -104,7 +114,9 @@
 		return accounts_with_new_balance
 
 	@staticmethod
-	def get_account_balance_from_gle(company, posting_date, account, party_type, party):
+	def get_account_balance_from_gle(
+		company, posting_date, account, party_type, party, rounding_loss_allowance
+	):
 		account_details = []
 
 		if company and posting_date:
@@ -172,10 +184,18 @@
 				)
 
 				# round off balance based on currency precision
+				# and consider debit-credit difference allowance
 				currency_precision = get_currency_precision()
+				rounding_loss_allowance = float(rounding_loss_allowance) or 0.05
 				for acc in account_details:
 					acc.balance_in_account_currency = flt(acc.balance_in_account_currency, currency_precision)
+					if abs(acc.balance_in_account_currency) <= rounding_loss_allowance:
+						acc.balance_in_account_currency = 0
+
 					acc.balance = flt(acc.balance, currency_precision)
+					if abs(acc.balance) <= rounding_loss_allowance:
+						acc.balance = 0
+
 					acc.zero_balance = (
 						True if (acc.balance == 0 or acc.balance_in_account_currency == 0) else False
 					)
@@ -353,6 +373,24 @@
 						"credit": 0,
 					}
 				)
+
+				journal_entry_accounts.append(journal_account)
+
+				journal_entry_accounts.append(
+					{
+						"account": unrealized_exchange_gain_loss_account,
+						"balance": get_balance_on(unrealized_exchange_gain_loss_account),
+						"debit": 0,
+						"credit": 0,
+						"debit_in_account_currency": abs(d.gain_loss) if d.gain_loss < 0 else 0,
+						"credit_in_account_currency": abs(d.gain_loss) if d.gain_loss > 0 else 0,
+						"cost_center": erpnext.get_default_cost_center(self.company),
+						"exchange_rate": 1,
+						"reference_type": "Exchange Rate Revaluation",
+						"reference_name": self.name,
+					}
+				)
+
 			elif d.get("balance_in_base_currency") and not d.get("new_balance_in_base_currency"):
 				# Base currency has balance
 				dr_or_cr = "credit" if d.get("balance_in_base_currency") > 0 else "debit"
@@ -368,22 +406,22 @@
 					}
 				)
 
-			journal_entry_accounts.append(journal_account)
+				journal_entry_accounts.append(journal_account)
 
-		journal_entry_accounts.append(
-			{
-				"account": unrealized_exchange_gain_loss_account,
-				"balance": get_balance_on(unrealized_exchange_gain_loss_account),
-				"debit": abs(self.gain_loss_booked) if self.gain_loss_booked < 0 else 0,
-				"credit": abs(self.gain_loss_booked) if self.gain_loss_booked > 0 else 0,
-				"debit_in_account_currency": abs(self.gain_loss_booked) if self.gain_loss_booked < 0 else 0,
-				"credit_in_account_currency": self.gain_loss_booked if self.gain_loss_booked > 0 else 0,
-				"cost_center": erpnext.get_default_cost_center(self.company),
-				"exchange_rate": 1,
-				"reference_type": "Exchange Rate Revaluation",
-				"reference_name": self.name,
-			}
-		)
+				journal_entry_accounts.append(
+					{
+						"account": unrealized_exchange_gain_loss_account,
+						"balance": get_balance_on(unrealized_exchange_gain_loss_account),
+						"debit": abs(d.gain_loss) if d.gain_loss < 0 else 0,
+						"credit": abs(d.gain_loss) if d.gain_loss > 0 else 0,
+						"debit_in_account_currency": 0,
+						"credit_in_account_currency": 0,
+						"cost_center": erpnext.get_default_cost_center(self.company),
+						"exchange_rate": 1,
+						"reference_type": "Exchange Rate Revaluation",
+						"reference_name": self.name,
+					}
+				)
 
 		journal_entry.set("accounts", journal_entry_accounts)
 		journal_entry.set_total_debit_credit()
@@ -531,7 +569,9 @@
 
 
 @frappe.whitelist()
-def get_account_details(company, posting_date, account, party_type=None, party=None):
+def get_account_details(
+	company, posting_date, account, party_type=None, party=None, rounding_loss_allowance: float = None
+):
 	if not (company and posting_date):
 		frappe.throw(_("Company and Posting Date is mandatory"))
 
@@ -549,7 +589,12 @@
 		"account_currency": account_currency,
 	}
 	account_balance = ExchangeRateRevaluation.get_account_balance_from_gle(
-		company=company, posting_date=posting_date, account=account, party_type=party_type, party=party
+		company=company,
+		posting_date=posting_date,
+		account=account,
+		party_type=party_type,
+		party=party,
+		rounding_loss_allowance=rounding_loss_allowance,
 	)
 
 	if account_balance and (
diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation_account/exchange_rate_revaluation_account.json b/erpnext/accounts/doctype/exchange_rate_revaluation_account/exchange_rate_revaluation_account.json
index 2968359..0a7d057 100644
--- a/erpnext/accounts/doctype/exchange_rate_revaluation_account/exchange_rate_revaluation_account.json
+++ b/erpnext/accounts/doctype/exchange_rate_revaluation_account/exchange_rate_revaluation_account.json
@@ -92,6 +92,7 @@
    "fieldtype": "Float",
    "in_list_view": 1,
    "label": "New Exchange Rate",
+   "precision": "9",
    "reqd": 1
   },
   {
@@ -147,7 +148,7 @@
  ],
  "istable": 1,
  "links": [],
- "modified": "2022-12-29 19:38:52.915295",
+ "modified": "2023-06-20 07:21:40.743460",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Exchange Rate Revaluation Account",
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index 3207e41..9d1b99b 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -12,7 +12,7 @@
 class FiscalYear(Document):
 	@frappe.whitelist()
 	def set_as_default(self):
-		frappe.db.set_value("Global Defaults", None, "current_fiscal_year", self.name)
+		frappe.db.set_single_value("Global Defaults", "current_fiscal_year", self.name)
 		global_defaults = frappe.get_doc("Global Defaults")
 		global_defaults.check_permission("write")
 		global_defaults.on_update()
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index b31cc32..6d9e320 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -575,7 +575,7 @@
 		};
 		if(!frm.doc.multi_currency) {
 			$.extend(filters, {
-				account_currency: frappe.get_doc(":Company", frm.doc.company).default_currency
+				account_currency: ['in', [frappe.get_doc(":Company", frm.doc.company).default_currency, null]]
 			});
 		}
 		return { filters: filters };
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 34a753f..74fd559 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -952,6 +952,7 @@
 					blank_row.debit_in_account_currency = abs(diff)
 					blank_row.debit = abs(diff)
 
+			self.set_total_debit_credit()
 			self.validate_total_debit_and_credit()
 
 	@frappe.whitelist()
diff --git a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
index f7297d1..73b1911 100644
--- a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py
@@ -105,8 +105,8 @@
 
 		elif test_voucher.doctype in ["Sales Order", "Purchase Order"]:
 			# if test_voucher is a Sales Order/Purchase Order, test error on cancellation of test_voucher
-			frappe.db.set_value(
-				"Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
+			frappe.db.set_single_value(
+				"Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
 			)
 			submitted_voucher = frappe.get_doc(test_voucher.doctype, test_voucher.name)
 			self.assertRaises(frappe.LinkExistsError, submitted_voucher.cancel)
diff --git a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
index 5ebdf61..7d80754 100644
--- a/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
+++ b/erpnext/accounts/doctype/journal_entry_template/journal_entry_template.js
@@ -28,7 +28,7 @@
 
 			if(!frm.doc.multi_currency) {
 				$.extend(filters, {
-					account_currency: frappe.get_doc(":Company", frm.doc.company).default_currency
+					account_currency: ['in', [frappe.get_doc(":Company", frm.doc.company).default_currency, null]]
 				});
 			}
 
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 2843824..9f55ba1 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -612,7 +612,7 @@
 			frm.events.set_unallocated_amount(frm);
 	},
 
-	get_outstanding_invoice: function(frm) {
+	get_outstanding_invoices_or_orders: function(frm, get_outstanding_invoices, get_orders_to_be_billed) {
 		const today = frappe.datetime.get_today();
 		const fields = [
 			{fieldtype:"Section Break", label: __("Posting Date")},
@@ -642,12 +642,29 @@
 			{fieldtype:"Check", label: __("Allocate Payment Amount"), fieldname:"allocate_payment_amount", default:1},
 		];
 
+		let btn_text = "";
+
+		if (get_outstanding_invoices) {
+			btn_text = "Get Outstanding Invoices";
+		}
+		else if (get_orders_to_be_billed) {
+			btn_text = "Get Outstanding Orders";
+		}
+
 		frappe.prompt(fields, function(filters){
 			frappe.flags.allocate_payment_amount = true;
 			frm.events.validate_filters_data(frm, filters);
 			frm.doc.cost_center = filters.cost_center;
-			frm.events.get_outstanding_documents(frm, filters);
-		}, __("Filters"), __("Get Outstanding Documents"));
+			frm.events.get_outstanding_documents(frm, filters, get_outstanding_invoices, get_orders_to_be_billed);
+		}, __("Filters"), __(btn_text));
+	},
+
+	get_outstanding_invoices: function(frm) {
+		frm.events.get_outstanding_invoices_or_orders(frm, true, false);
+	},
+
+	get_outstanding_orders: function(frm) {
+		frm.events.get_outstanding_invoices_or_orders(frm, false, true);
 	},
 
 	validate_filters_data: function(frm, filters) {
@@ -673,7 +690,7 @@
 		}
 	},
 
-	get_outstanding_documents: function(frm, filters) {
+	get_outstanding_documents: function(frm, filters, get_outstanding_invoices, get_orders_to_be_billed) {
 		frm.clear_table("references");
 
 		if(!frm.doc.party) {
@@ -697,6 +714,13 @@
 			args[key] = filters[key];
 		}
 
+		if (get_outstanding_invoices) {
+			args["get_outstanding_invoices"] = true;
+		}
+		else if (get_orders_to_be_billed) {
+			args["get_orders_to_be_billed"] = true;
+		}
+
 		frappe.flags.allocate_payment_amount = filters['allocate_payment_amount'];
 
 		return  frappe.call({
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 3927eca..6224d40 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -48,7 +48,8 @@
   "base_received_amount",
   "base_received_amount_after_tax",
   "section_break_14",
-  "get_outstanding_invoice",
+  "get_outstanding_invoices",
+  "get_outstanding_orders",
   "references",
   "section_break_34",
   "total_allocated_amount",
@@ -356,12 +357,6 @@
    "label": "Reference"
   },
   {
-   "depends_on": "eval:doc.docstatus==0",
-   "fieldname": "get_outstanding_invoice",
-   "fieldtype": "Button",
-   "label": "Get Outstanding Invoice"
-  },
-  {
    "fieldname": "references",
    "fieldtype": "Table",
    "label": "Payment References",
@@ -728,12 +723,24 @@
    "fieldname": "section_break_60",
    "fieldtype": "Section Break",
    "hide_border": 1
+  },
+  {
+   "depends_on": "eval:doc.docstatus==0",
+   "fieldname": "get_outstanding_invoices",
+   "fieldtype": "Button",
+   "label": "Get Outstanding Invoices"
+  },
+  {
+   "depends_on": "eval:doc.docstatus==0",
+   "fieldname": "get_outstanding_orders",
+   "fieldtype": "Button",
+   "label": "Get Outstanding Orders"
   }
  ],
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-02-14 04:52:30.478523",
+ "modified": "2023-06-19 11:38:04.387219",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Payment Entry",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 3df48e2..1f23fe1 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -148,19 +148,68 @@
 			)
 
 	def validate_allocated_amount(self):
+		if self.payment_type == "Internal Transfer":
+			return
+
+		if self.party_type in ("Customer", "Supplier"):
+			self.validate_allocated_amount_with_latest_data()
+		else:
+			fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.")
+			for d in self.get("references"):
+				if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(d.outstanding_amount):
+					frappe.throw(fail_message.format(d.idx))
+
+				# Check for negative outstanding invoices as well
+				if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(d.outstanding_amount):
+					frappe.throw(fail_message.format(d.idx))
+
+	def validate_allocated_amount_with_latest_data(self):
+		latest_references = get_outstanding_reference_documents(
+			{
+				"posting_date": self.posting_date,
+				"company": self.company,
+				"party_type": self.party_type,
+				"payment_type": self.payment_type,
+				"party": self.party,
+				"party_account": self.paid_from if self.payment_type == "Receive" else self.paid_to,
+				"get_outstanding_invoices": True,
+				"get_orders_to_be_billed": True,
+			}
+		)
+
+		# Group latest_references by (voucher_type, voucher_no)
+		latest_lookup = {}
+		for d in latest_references:
+			d = frappe._dict(d)
+			latest_lookup.update({(d.voucher_type, d.voucher_no): d})
+
 		for d in self.get("references"):
-			if (flt(d.allocated_amount)) > 0:
-				if flt(d.allocated_amount) > flt(d.outstanding_amount):
-					frappe.throw(
-						_("Row #{0}: Allocated Amount cannot be greater than outstanding amount.").format(d.idx)
-					)
+			latest = latest_lookup.get((d.reference_doctype, d.reference_name))
+
+			# The reference has already been fully paid
+			if not latest:
+				frappe.throw(
+					_("{0} {1} has already been fully paid.").format(d.reference_doctype, d.reference_name)
+				)
+			# The reference has already been partly paid
+			elif (
+				latest.outstanding_amount < latest.invoice_amount
+				and d.outstanding_amount != latest.outstanding_amount
+			):
+				frappe.throw(
+					_(
+						"{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts."
+					).format(d.reference_doctype, d.reference_name)
+				)
+
+			fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.")
+
+			if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(latest.outstanding_amount):
+				frappe.throw(fail_message.format(d.idx))
 
 			# Check for negative outstanding invoices as well
-			if flt(d.allocated_amount) < 0:
-				if flt(d.allocated_amount) < flt(d.outstanding_amount):
-					frappe.throw(
-						_("Row #{0}: Allocated Amount cannot be greater than outstanding amount.").format(d.idx)
-					)
+			if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(latest.outstanding_amount):
+				frappe.throw(fail_message.format(d.idx))
 
 	def delink_advance_entry_references(self):
 		for reference in self.references:
@@ -373,7 +422,7 @@
 		for k, v in no_oustanding_refs.items():
 			frappe.msgprint(
 				_(
-					"{} - {} now have {} as they had no outstanding amount left before submitting the Payment Entry."
+					"{} - {} now has {} as it had no outstanding amount left before submitting the Payment Entry."
 				).format(
 					_(k),
 					frappe.bold(", ".join(d.reference_name for d in v)),
@@ -1309,62 +1358,75 @@
 		condition += " and company = {0}".format(frappe.db.escape(args.get("company")))
 		common_filter.append(ple.company == args.get("company"))
 
-	outstanding_invoices = get_outstanding_invoices(
-		args.get("party_type"),
-		args.get("party"),
-		args.get("party_account"),
-		common_filter=common_filter,
-		posting_date=posting_and_due_date,
-		min_outstanding=args.get("outstanding_amt_greater_than"),
-		max_outstanding=args.get("outstanding_amt_less_than"),
-		accounting_dimensions=accounting_dimensions_filter,
-	)
-
-	outstanding_invoices = split_invoices_based_on_payment_terms(outstanding_invoices)
-
-	for d in outstanding_invoices:
-		d["exchange_rate"] = 1
-		if party_account_currency != company_currency:
-			if d.voucher_type in frappe.get_hooks("invoice_doctypes"):
-				d["exchange_rate"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "conversion_rate")
-			elif d.voucher_type == "Journal Entry":
-				d["exchange_rate"] = get_exchange_rate(
-					party_account_currency, company_currency, d.posting_date
-				)
-		if d.voucher_type in ("Purchase Invoice"):
-			d["bill_no"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "bill_no")
-
-	# Get all SO / PO which are not fully billed or against which full advance not paid
-	orders_to_be_billed = []
-	orders_to_be_billed = get_orders_to_be_billed(
-		args.get("posting_date"),
-		args.get("party_type"),
-		args.get("party"),
-		args.get("company"),
-		party_account_currency,
-		company_currency,
-		filters=args,
-	)
-
-	# Get negative outstanding sales /purchase invoices
+	outstanding_invoices = []
 	negative_outstanding_invoices = []
-	if args.get("party_type") != "Employee" and not args.get("voucher_no"):
-		negative_outstanding_invoices = get_negative_outstanding_invoices(
+
+	if args.get("get_outstanding_invoices"):
+		outstanding_invoices = get_outstanding_invoices(
 			args.get("party_type"),
 			args.get("party"),
 			args.get("party_account"),
+			common_filter=common_filter,
+			posting_date=posting_and_due_date,
+			min_outstanding=args.get("outstanding_amt_greater_than"),
+			max_outstanding=args.get("outstanding_amt_less_than"),
+			accounting_dimensions=accounting_dimensions_filter,
+		)
+
+		outstanding_invoices = split_invoices_based_on_payment_terms(outstanding_invoices)
+
+		for d in outstanding_invoices:
+			d["exchange_rate"] = 1
+			if party_account_currency != company_currency:
+				if d.voucher_type in frappe.get_hooks("invoice_doctypes"):
+					d["exchange_rate"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "conversion_rate")
+				elif d.voucher_type == "Journal Entry":
+					d["exchange_rate"] = get_exchange_rate(
+						party_account_currency, company_currency, d.posting_date
+					)
+			if d.voucher_type in ("Purchase Invoice"):
+				d["bill_no"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "bill_no")
+
+		# Get negative outstanding sales /purchase invoices
+		if args.get("party_type") != "Employee" and not args.get("voucher_no"):
+			negative_outstanding_invoices = get_negative_outstanding_invoices(
+				args.get("party_type"),
+				args.get("party"),
+				args.get("party_account"),
+				party_account_currency,
+				company_currency,
+				condition=condition,
+			)
+
+	# Get all SO / PO which are not fully billed or against which full advance not paid
+	orders_to_be_billed = []
+	if args.get("get_orders_to_be_billed"):
+		orders_to_be_billed = get_orders_to_be_billed(
+			args.get("posting_date"),
+			args.get("party_type"),
+			args.get("party"),
+			args.get("company"),
 			party_account_currency,
 			company_currency,
-			condition=condition,
+			filters=args,
 		)
 
 	data = negative_outstanding_invoices + outstanding_invoices + orders_to_be_billed
 
 	if not data:
+		if args.get("get_outstanding_invoices") and args.get("get_orders_to_be_billed"):
+			ref_document_type = "invoices or orders"
+		elif args.get("get_outstanding_invoices"):
+			ref_document_type = "invoices"
+		elif args.get("get_orders_to_be_billed"):
+			ref_document_type = "orders"
+
 		frappe.msgprint(
 			_(
-				"No outstanding invoices found for the {0} {1} which qualify the filters you have specified."
-			).format(_(args.get("party_type")).lower(), frappe.bold(args.get("party")))
+				"No outstanding {0} found for the {1} {2} which qualify the filters you have specified."
+			).format(
+				ref_document_type, _(args.get("party_type")).lower(), frappe.bold(args.get("party"))
+			)
 		)
 
 	return data
@@ -1449,7 +1511,7 @@
 	if voucher_type:
 		doc = frappe.get_doc({"doctype": voucher_type})
 		condition = ""
-		if doc and hasattr(doc, "cost_center"):
+		if doc and hasattr(doc, "cost_center") and doc.cost_center:
 			condition = " and cost_center='%s'" % cost_center
 
 	orders = []
@@ -1495,9 +1557,15 @@
 
 	order_list = []
 	for d in orders:
-		if not (
-			flt(d.outstanding_amount) >= flt(filters.get("outstanding_amt_greater_than"))
-			and flt(d.outstanding_amount) <= flt(filters.get("outstanding_amt_less_than"))
+		if (
+			filters
+			and filters.get("outstanding_amt_greater_than")
+			and filters.get("outstanding_amt_less_than")
+			and not (
+				flt(filters.get("outstanding_amt_greater_than"))
+				<= flt(d.outstanding_amount)
+				<= flt(filters.get("outstanding_amt_less_than"))
+			)
 		):
 			continue
 
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 68f333d..278b12f 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -1013,6 +1013,30 @@
 		employee = make_employee("test_payment_entry@salary.com", company="_Test Company")
 		create_payment_entry(party_type="Employee", party=employee, save=True)
 
+	def test_duplicate_payment_entry_allocate_amount(self):
+		si = create_sales_invoice()
+
+		pe_draft = get_payment_entry("Sales Invoice", si.name)
+		pe_draft.insert()
+
+		pe = get_payment_entry("Sales Invoice", si.name)
+		pe.submit()
+
+		self.assertRaises(frappe.ValidationError, pe_draft.submit)
+
+	def test_duplicate_payment_entry_partial_allocate_amount(self):
+		si = create_sales_invoice()
+
+		pe_draft = get_payment_entry("Sales Invoice", si.name)
+		pe_draft.insert()
+
+		pe = get_payment_entry("Sales Invoice", si.name)
+		pe.received_amount = si.total / 2
+		pe.references[0].allocated_amount = si.total / 2
+		pe.submit()
+
+		self.assertRaises(frappe.ValidationError, pe_draft.submit)
+
 
 def create_payment_entry(**args):
 	payment_entry = frappe.new_doc("Payment Entry")
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 08d38dd..2283677 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -65,22 +65,22 @@
 			this.frm.add_custom_button(__('Get Unreconciled Entries'), () =>
 				this.frm.trigger("get_unreconciled_entries")
 			);
-			this.frm.change_custom_button_type('Get Unreconciled Entries', null, 'primary');
+			this.frm.change_custom_button_type(__('Get Unreconciled Entries'), null, 'primary');
 		}
 		if (this.frm.doc.invoices.length && this.frm.doc.payments.length) {
 			this.frm.add_custom_button(__('Allocate'), () =>
 				this.frm.trigger("allocate")
 			);
-			this.frm.change_custom_button_type('Allocate', null, 'primary');
-			this.frm.change_custom_button_type('Get Unreconciled Entries', null, 'default');
+			this.frm.change_custom_button_type(__('Allocate'), null, 'primary');
+			this.frm.change_custom_button_type(__('Get Unreconciled Entries'), null, 'default');
 		}
 		if (this.frm.doc.allocation.length) {
 			this.frm.add_custom_button(__('Reconcile'), () =>
 				this.frm.trigger("reconcile")
 			);
-			this.frm.change_custom_button_type('Reconcile', null, 'primary');
-			this.frm.change_custom_button_type('Get Unreconciled Entries', null, 'default');
-			this.frm.change_custom_button_type('Allocate', null, 'default');
+			this.frm.change_custom_button_type(__('Reconcile'), null, 'primary');
+			this.frm.change_custom_button_type(__('Get Unreconciled Entries'), null, 'default');
+			this.frm.change_custom_button_type(__('Allocate'), null, 'default');
 		}
 
 		// check for any running reconciliation jobs
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index cc2b942..2c8faec 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -6,7 +6,6 @@
 from frappe import _, msgprint, qb
 from frappe.model.document import Document
 from frappe.query_builder.custom import ConstantColumn
-from frappe.query_builder.functions import IfNull
 from frappe.utils import flt, get_link_to_form, getdate, nowdate, today
 
 import erpnext
@@ -127,12 +126,29 @@
 
 		return list(journal_entries)
 
+	def get_return_invoices(self):
+		voucher_type = "Sales Invoice" if self.party_type == "Customer" else "Purchase Invoice"
+		doc = qb.DocType(voucher_type)
+		self.return_invoices = (
+			qb.from_(doc)
+			.select(
+				ConstantColumn(voucher_type).as_("voucher_type"),
+				doc.name.as_("voucher_no"),
+				doc.return_against,
+			)
+			.where(
+				(doc.docstatus == 1)
+				& (doc[frappe.scrub(self.party_type)] == self.party)
+				& (doc.is_return == 1)
+			)
+			.run(as_dict=True)
+		)
+
 	def get_dr_or_cr_notes(self):
 
 		self.build_qb_filter_conditions(get_return_invoices=True)
 
 		ple = qb.DocType("Payment Ledger Entry")
-		voucher_type = "Sales Invoice" if self.party_type == "Customer" else "Purchase Invoice"
 
 		if erpnext.get_party_account_type(self.party_type) == "Receivable":
 			self.common_filter_conditions.append(ple.account_type == "Receivable")
@@ -140,19 +156,10 @@
 			self.common_filter_conditions.append(ple.account_type == "Payable")
 		self.common_filter_conditions.append(ple.account == self.receivable_payable_account)
 
-		# get return invoices
-		doc = qb.DocType(voucher_type)
-		return_invoices = (
-			qb.from_(doc)
-			.select(ConstantColumn(voucher_type).as_("voucher_type"), doc.name.as_("voucher_no"))
-			.where(
-				(doc.docstatus == 1)
-				& (doc[frappe.scrub(self.party_type)] == self.party)
-				& (doc.is_return == 1)
-				& (IfNull(doc.return_against, "") == "")
-			)
-			.run(as_dict=True)
-		)
+		self.get_return_invoices()
+		return_invoices = [
+			x for x in self.return_invoices if x.return_against == None or x.return_against == ""
+		]
 
 		outstanding_dr_or_cr = []
 		if return_invoices:
@@ -204,6 +211,15 @@
 			accounting_dimensions=self.accounting_dimension_filter_conditions,
 		)
 
+		cr_dr_notes = (
+			[x.voucher_no for x in self.return_invoices]
+			if self.party_type in ["Customer", "Supplier"]
+			else []
+		)
+		# Filter out cr/dr notes from outstanding invoices list
+		# Happens when non-standalone cr/dr notes are linked with another invoice through journal entry
+		non_reconciled_invoices = [x for x in non_reconciled_invoices if x.voucher_no not in cr_dr_notes]
+
 		if self.invoice_limit:
 			non_reconciled_invoices = non_reconciled_invoices[: self.invoice_limit]
 
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 9d636ad..641f452 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -44,6 +44,7 @@
 				voucher_type="Period Closing Voucher",
 				voucher_no=self.name,
 				queue="long",
+				enqueue_after_commit=True,
 			)
 			frappe.msgprint(
 				_("The GL Entries will be cancelled in the background, it can take a few minutes."), alert=True
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
index eedaaaf..f604707 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -442,6 +442,7 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1554,11 +1555,10 @@
  "icon": "fa fa-file-text",
  "is_submittable": 1,
  "links": [],
- "modified": "2022-09-30 03:49:50.455199",
+ "modified": "2023-06-03 16:23:41.083409",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "POS Invoice",
- "name_case": "Title Case",
  "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
diff --git a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
index 9685d99..f842a16 100644
--- a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py
@@ -31,7 +31,7 @@
 			frappe.set_user("Administrator")
 
 		if frappe.db.get_single_value("Selling Settings", "validate_selling_price"):
-			frappe.db.set_value("Selling Settings", None, "validate_selling_price", 0)
+			frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
 
 	def test_timestamp_change(self):
 		w = create_pos_invoice(do_not_save=1)
@@ -722,7 +722,7 @@
 		)
 
 		if not frappe.db.get_single_value("Selling Settings", "validate_selling_price"):
-			frappe.db.set_value("Selling Settings", "Selling Settings", "validate_selling_price", 1)
+			frappe.db.set_single_value("Selling Settings", "validate_selling_price", 1)
 
 		item = "Test Selling Price Validation"
 		make_item(item, {"is_stock_item": 1})
diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
index b36f33b..67dbe09 100644
--- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
+++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py
@@ -158,7 +158,7 @@
 	return frappe.get_list(
 		"Customer",
 		fields=["name", "customer_name", "email_id"],
-		filters=[[fields_dict[customer_collection], "IN", selected]],
+		filters=[["disabled", "=", 0], [fields_dict[customer_collection], "IN", selected]],
 	)
 
 
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 60f9d62..0c18f5e 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -443,12 +443,14 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
    "fieldname": "contact_email",
    "fieldtype": "Small Text",
    "label": "Contact Email",
+   "options": "Email",
    "print_hide": 1,
    "read_only": 1
   },
@@ -1364,12 +1366,12 @@
    "depends_on": "eval:doc.update_stock && doc.is_internal_supplier",
    "fieldname": "set_from_warehouse",
    "fieldtype": "Link",
+   "ignore_user_permissions": 1,
    "label": "Set From Warehouse",
    "no_copy": 1,
    "options": "Warehouse",
    "print_hide": 1,
    "print_width": "50px",
-   "ignore_user_permissions": 1,
    "width": "50px"
   },
   {
@@ -1573,7 +1575,7 @@
  "idx": 204,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-29 12:57:50.832598",
+ "modified": "2023-06-03 16:21:54.637245",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 5b83534..45bddfc 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -42,7 +42,7 @@
 	@classmethod
 	def setUpClass(self):
 		unlink_payment_on_cancel_of_invoice()
-		frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
+		frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
 
 	@classmethod
 	def tearDownClass(self):
@@ -642,13 +642,6 @@
 			gle_filters={"account": "Stock In Hand - TCP1"},
 		)
 
-		# assert loss booked in COGS
-		self.assertGLEs(
-			return_pi,
-			[{"credit": 0, "debit": 200}],
-			gle_filters={"account": "Cost of Goods Sold - TCP1"},
-		)
-
 	def test_return_with_lcv(self):
 		from erpnext.controllers.sales_and_purchase_return import make_return_doc
 		from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
@@ -1232,9 +1225,7 @@
 			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice"
 		)
 
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice", 1
-		)
+		frappe.db.set_single_value("Accounts Settings", "unlink_payment_on_cancel_of_invoice", 1)
 
 		original_account = frappe.db.get_value("Company", "_Test Company", "exchange_gain_loss_account")
 		frappe.db.set_value(
@@ -1369,8 +1360,8 @@
 		pay.reload()
 		pay.cancel()
 
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
+		frappe.db.set_single_value(
+			"Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
 		)
 		frappe.db.set_value("Company", "_Test Company", "exchange_gain_loss_account", original_account)
 
@@ -1673,6 +1664,21 @@
 
 		self.assertTrue(return_pi.docstatus == 1)
 
+	def test_gl_entries_for_standalone_debit_note(self):
+		make_purchase_invoice(qty=5, rate=500, update_stock=True)
+
+		returned_inv = make_purchase_invoice(qty=-5, rate=5, update_stock=True, is_return=True)
+
+		# override the rate with valuation rate
+		sle = frappe.get_all(
+			"Stock Ledger Entry",
+			fields=["stock_value_difference", "actual_qty"],
+			filters={"voucher_no": returned_inv.name},
+		)[0]
+
+		rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
+		self.assertAlmostEqual(returned_inv.items[0].rate, rate)
+
 
 def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
 	gl_entries = frappe.db.sql(
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index 6a65b30..ab4aab3 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -320,6 +320,7 @@
   },
   {
    "default": "0",
+   "depends_on": "eval: !doc.is_debit_note",
    "fieldname": "is_return",
    "fieldtype": "Check",
    "hide_days": 1,
@@ -520,6 +521,7 @@
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1959,6 +1961,7 @@
   },
   {
    "default": "0",
+   "depends_on": "eval: !doc.is_return",
    "description": "Issue a debit note with 0 qty against an existing Sales Invoice",
    "fieldname": "is_debit_note",
    "fieldtype": "Check",
@@ -2154,7 +2157,7 @@
    "link_fieldname": "consolidated_invoice"
   }
  ],
- "modified": "2023-04-28 14:15:59.901154",
+ "modified": "2023-06-19 16:02:05.309332",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Sales Invoice",
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 2075d57..7ab1c89 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1001,10 +1001,16 @@
 
 	def check_prev_docstatus(self):
 		for d in self.get("items"):
-			if d.sales_order and frappe.db.get_value("Sales Order", d.sales_order, "docstatus") != 1:
+			if (
+				d.sales_order
+				and frappe.db.get_value("Sales Order", d.sales_order, "docstatus", cache=True) != 1
+			):
 				frappe.throw(_("Sales Order {0} is not submitted").format(d.sales_order))
 
-			if d.delivery_note and frappe.db.get_value("Delivery Note", d.delivery_note, "docstatus") != 1:
+			if (
+				d.delivery_note
+				and frappe.db.get_value("Delivery Note", d.delivery_note, "docstatus", cache=True) != 1
+			):
 				throw(_("Delivery Note {0} is not submitted").format(d.delivery_note))
 
 	def make_gl_entries(self, gl_entries=None, from_repost=False):
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 51e0d91..784bdf6 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -1063,7 +1063,7 @@
 		self.assertEqual(pos.write_off_amount, 10)
 
 	def test_pos_with_no_gl_entry_for_change_amount(self):
-		frappe.db.set_value("Accounts Settings", None, "post_change_gl_entries", 0)
+		frappe.db.set_single_value("Accounts Settings", "post_change_gl_entries", 0)
 
 		make_pos_profile(
 			company="_Test Company with perpetual inventory",
@@ -1113,7 +1113,7 @@
 
 		self.validate_pos_gl_entry(pos, pos, 60, validate_without_change_gle=True)
 
-		frappe.db.set_value("Accounts Settings", None, "post_change_gl_entries", 1)
+		frappe.db.set_single_value("Accounts Settings", "post_change_gl_entries", 1)
 
 	def validate_pos_gl_entry(self, si, pos, cash_amount, validate_without_change_gle=False):
 		if validate_without_change_gle:
@@ -2452,7 +2452,7 @@
 		"Check mapping (expense account) of inter company SI to PI in absence of default warehouse."
 		# setup
 		old_negative_stock = frappe.db.get_single_value("Stock Settings", "allow_negative_stock")
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		old_perpetual_inventory = erpnext.is_perpetual_inventory_enabled("_Test Company 1")
 		frappe.local.enable_perpetual_inventory["_Test Company 1"] = 1
@@ -2506,7 +2506,7 @@
 
 		# tear down
 		frappe.local.enable_perpetual_inventory["_Test Company 1"] = old_perpetual_inventory
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", old_negative_stock)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", old_negative_stock)
 
 	def test_sle_for_target_warehouse(self):
 		se = make_stock_entry(
@@ -2898,7 +2898,7 @@
 		party_link = create_party_link("Supplier", supplier, customer)
 
 		# enable common party accounting
-		frappe.db.set_value("Accounts Settings", None, "enable_common_party_accounting", 1)
+		frappe.db.set_single_value("Accounts Settings", "enable_common_party_accounting", 1)
 
 		# create a sales invoice
 		si = create_sales_invoice(customer=customer, parent_cost_center="_Test Cost Center - _TC")
@@ -2925,7 +2925,7 @@
 		self.assertEqual(jv[0], si.grand_total)
 
 		party_link.delete()
-		frappe.db.set_value("Accounts Settings", None, "enable_common_party_accounting", 0)
+		frappe.db.set_single_value("Accounts Settings", "enable_common_party_accounting", 0)
 
 	def test_payment_statuses(self):
 		from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
@@ -3045,7 +3045,7 @@
 			self.assertRaises(frappe.ValidationError, si.save)
 
 	def test_sales_invoice_submission_post_account_freezing_date(self):
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", add_days(getdate(), 1))
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", add_days(getdate(), 1))
 		si = create_sales_invoice(do_not_save=True)
 		si.posting_date = add_days(getdate(), 1)
 		si.save()
@@ -3054,7 +3054,7 @@
 		si.posting_date = getdate()
 		si.submit()
 
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", None)
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", None)
 
 	def test_over_billing_case_against_delivery_note(self):
 		"""
@@ -3066,7 +3066,7 @@
 		over_billing_allowance = frappe.db.get_single_value(
 			"Accounts Settings", "over_billing_allowance"
 		)
-		frappe.db.set_value("Accounts Settings", None, "over_billing_allowance", 0)
+		frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", 0)
 
 		dn = create_delivery_note()
 		dn.submit()
@@ -3082,7 +3082,7 @@
 
 		self.assertTrue("cannot overbill" in str(err.exception).lower())
 
-		frappe.db.set_value("Accounts Settings", None, "over_billing_allowance", over_billing_allowance)
+		frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", over_billing_allowance)
 
 	def test_multi_currency_deferred_revenue_via_journal_entry(self):
 		deferred_account = create_account(
@@ -3121,7 +3121,7 @@
 		si.save()
 		si.submit()
 
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", getdate("2019-01-31"))
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", getdate("2019-01-31"))
 
 		pda1 = frappe.get_doc(
 			dict(
@@ -3166,7 +3166,7 @@
 		acc_settings.submit_journal_entries = 0
 		acc_settings.save()
 
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", None)
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", None)
 
 	def test_standalone_serial_no_return(self):
 		si = create_sales_invoice(
@@ -3216,9 +3216,7 @@
 			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice"
 		)
 
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice", 1
-		)
+		frappe.db.set_single_value("Accounts Settings", "unlink_payment_on_cancel_of_invoice", 1)
 
 		jv = make_journal_entry("_Test Receivable USD - _TC", "_Test Bank - _TC", -7000, save=False)
 
@@ -3261,8 +3259,8 @@
 
 		check_gl_entries(self, si.name, expected_gle, nowdate())
 
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
+		frappe.db.set_single_value(
+			"Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
 		)
 
 	def test_batch_expiry_for_sales_invoice_return(self):
diff --git a/erpnext/accounts/doctype/shareholder/shareholder.json b/erpnext/accounts/doctype/shareholder/shareholder.json
index e94aea9..e80b057 100644
--- a/erpnext/accounts/doctype/shareholder/shareholder.json
+++ b/erpnext/accounts/doctype/shareholder/shareholder.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "autoname": "naming_series:",
  "creation": "2017-12-25 16:50:53.878430",
  "doctype": "DocType",
@@ -111,11 +112,12 @@
    "read_only": 1
   }
  ],
- "modified": "2019-11-17 23:24:11.395882",
+ "links": [],
+ "modified": "2023-04-10 22:02:20.406087",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Shareholder",
- "name_case": "Title Case",
+ "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
   {
@@ -158,6 +160,7 @@
  "search_fields": "folio_no",
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "title_field": "title",
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/tax_rule/test_tax_rule.py b/erpnext/accounts/doctype/tax_rule/test_tax_rule.py
index 848e054..335b483 100644
--- a/erpnext/accounts/doctype/tax_rule/test_tax_rule.py
+++ b/erpnext/accounts/doctype/tax_rule/test_tax_rule.py
@@ -15,7 +15,7 @@
 class TestTaxRule(unittest.TestCase):
 	@classmethod
 	def setUpClass(cls):
-		frappe.db.set_value("Shopping Cart Settings", None, "enabled", 0)
+		frappe.db.set_single_value("Shopping Cart Settings", "enabled", 0)
 
 	@classmethod
 	def tearDownClass(cls):
diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
index 1f2d980..c2b7ff0 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
@@ -3,9 +3,11 @@
 
 
 import frappe
-from frappe import _
+from frappe import _, qb
 from frappe.model.document import Document
-from frappe.utils import cint, getdate
+from frappe.query_builder import Criterion
+from frappe.query_builder.functions import Abs, Sum
+from frappe.utils import cint, flt, getdate
 
 
 class TaxWithholdingCategory(Document):
@@ -346,26 +348,33 @@
 def get_advance_vouchers(
 	parties, company=None, from_date=None, to_date=None, party_type="Supplier"
 ):
-	# for advance vouchers, debit and credit is reversed
-	dr_or_cr = "debit" if party_type == "Supplier" else "credit"
+	"""
+	Use Payment Ledger to fetch unallocated Advance Payments
+	"""
 
-	filters = {
-		dr_or_cr: [">", 0],
-		"is_opening": "No",
-		"is_cancelled": 0,
-		"party_type": party_type,
-		"party": ["in", parties],
-	}
+	ple = qb.DocType("Payment Ledger Entry")
 
-	if party_type == "Customer":
-		filters.update({"against_voucher": ["is", "not set"]})
+	conditions = []
+
+	conditions.append(ple.amount.lt(0))
+	conditions.append(ple.delinked == 0)
+	conditions.append(ple.party_type == party_type)
+	conditions.append(ple.party.isin(parties))
+	conditions.append(ple.voucher_no == ple.against_voucher_no)
 
 	if company:
-		filters["company"] = company
-	if from_date and to_date:
-		filters["posting_date"] = ["between", (from_date, to_date)]
+		conditions.append(ple.company == company)
 
-	return frappe.get_all("GL Entry", filters=filters, distinct=1, pluck="voucher_no") or [""]
+	if from_date and to_date:
+		conditions.append(ple.posting_date[from_date:to_date])
+
+	advances = (
+		qb.from_(ple).select(ple.voucher_no).distinct().where(Criterion.all(conditions)).run(as_list=1)
+	)
+	if advances:
+		advances = [x[0] for x in advances]
+
+	return advances
 
 
 def get_taxes_deducted_on_advances_allocated(inv, tax_details):
@@ -499,6 +508,7 @@
 
 def get_tcs_amount(parties, inv, tax_details, vouchers, adv_vouchers):
 	tcs_amount = 0
+	ple = qb.DocType("Payment Ledger Entry")
 
 	# sum of debit entries made from sales invoices
 	invoiced_amt = (
@@ -516,18 +526,20 @@
 	)
 
 	# sum of credit entries made from PE / JV with unset 'against voucher'
+
+	conditions = []
+	conditions.append(ple.amount.lt(0))
+	conditions.append(ple.delinked == 0)
+	conditions.append(ple.party.isin(parties))
+	conditions.append(ple.voucher_no == ple.against_voucher_no)
+	conditions.append(ple.company == inv.company)
+
+	advances = (
+		qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run(as_list=1)
+	)
+
 	advance_amt = (
-		frappe.db.get_value(
-			"GL Entry",
-			{
-				"is_cancelled": 0,
-				"party": ["in", parties],
-				"company": inv.company,
-				"voucher_no": ["in", adv_vouchers],
-			},
-			"sum(credit)",
-		)
-		or 0.0
+		qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run()[0][0] or 0.0
 	)
 
 	# sum of credit entries made from sales invoice
@@ -569,7 +581,12 @@
 	tds_amount = 0
 	limit_consumed = frappe.db.get_value(
 		"Purchase Invoice",
-		{"supplier": ("in", parties), "apply_tds": 1, "docstatus": 1},
+		{
+			"supplier": ("in", parties),
+			"apply_tds": 1,
+			"docstatus": 1,
+			"posting_date": ("between", (ldc.valid_from, ldc.valid_upto)),
+		},
 		"sum(tax_withholding_net_total)",
 	)
 
@@ -584,10 +601,10 @@
 
 
 def get_ltds_amount(current_amount, deducted_amount, certificate_limit, rate, tax_details):
-	if current_amount < (certificate_limit - deducted_amount):
+	if certificate_limit - flt(deducted_amount) - flt(current_amount) >= 0:
 		return current_amount * rate / 100
 	else:
-		ltds_amount = certificate_limit - deducted_amount
+		ltds_amount = certificate_limit - flt(deducted_amount)
 		tds_amount = current_amount - ltds_amount
 
 		return ltds_amount * rate / 100 + tds_amount * tax_details.rate / 100
@@ -598,9 +615,9 @@
 ):
 	valid = False
 
-	if (
-		getdate(valid_from) <= getdate(posting_date) <= getdate(valid_upto)
-	) and certificate_limit > deducted_amount:
+	available_amount = flt(certificate_limit) - flt(deducted_amount) - flt(current_amount)
+
+	if (getdate(valid_from) <= getdate(posting_date) <= getdate(valid_upto)) and available_amount > 0:
 		valid = True
 
 	return valid
diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
index bc4f670..4580b13 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
@@ -152,6 +152,60 @@
 		for d in reversed(invoices):
 			d.cancel()
 
+	def test_tcs_on_unallocated_advance_payments(self):
+		frappe.db.set_value(
+			"Customer", "Test TCS Customer", "tax_withholding_category", "Cumulative Threshold TCS"
+		)
+
+		vouchers = []
+
+		# create advance payment
+		pe = create_payment_entry(
+			payment_type="Receive", party_type="Customer", party="Test TCS Customer", paid_amount=20000
+		)
+		pe.paid_from = "Debtors - _TC"
+		pe.paid_to = "Cash - _TC"
+		pe.submit()
+		vouchers.append(pe)
+
+		# create invoice
+		si1 = create_sales_invoice(customer="Test TCS Customer", rate=5000)
+		si1.submit()
+		vouchers.append(si1)
+
+		# reconcile
+		pr = frappe.get_doc("Payment Reconciliation")
+		pr.company = "_Test Company"
+		pr.party_type = "Customer"
+		pr.party = "Test TCS Customer"
+		pr.receivable_payable_account = "Debtors - _TC"
+		pr.get_unreconciled_entries()
+		invoices = [x.as_dict() for x in pr.get("invoices")]
+		payments = [x.as_dict() for x in pr.get("payments")]
+		pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
+		pr.reconcile()
+
+		# make another invoice
+		# sum of unallocated amount from payment entry and this sales invoice will breach cumulative threashold
+		# TDS should be calculated
+		si2 = create_sales_invoice(customer="Test TCS Customer", rate=15000)
+		si2.submit()
+		vouchers.append(si2)
+
+		si3 = create_sales_invoice(customer="Test TCS Customer", rate=10000)
+		si3.submit()
+		vouchers.append(si3)
+
+		# assert tax collection on total invoice amount created until now
+		tcs_charged = sum([d.base_tax_amount for d in si2.taxes if d.account_head == "TCS - _TC"])
+		tcs_charged += sum([d.base_tax_amount for d in si3.taxes if d.account_head == "TCS - _TC"])
+		self.assertEqual(tcs_charged, 1500)
+
+		# cancel invoice and payments to avoid clashing
+		for d in reversed(vouchers):
+			d.reload()
+			d.cancel()
+
 	def test_tds_calculation_on_net_total(self):
 		frappe.db.set_value(
 			"Supplier", "Test TDS Supplier4", "tax_withholding_category", "Cumulative Threshold TDS"
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index f86dd8f..07b865e 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -2,6 +2,8 @@
 # License: GNU General Public License v3. See license.txt
 
 
+from typing import Optional
+
 import frappe
 from frappe import _, msgprint, scrub
 from frappe.contacts.doctype.address.address import (
@@ -647,12 +649,12 @@
 	else:
 		args.update(get_party_details(party, party_type))
 
-	if party_type in ("Customer", "Lead"):
+	if party_type in ("Customer", "Lead", "Prospect"):
 		args.update({"tax_type": "Sales"})
 
-		if party_type == "Lead":
+		if party_type in ["Lead", "Prospect"]:
 			args["customer"] = None
-			del args["lead"]
+			del args[frappe.scrub(party_type)]
 	else:
 		args.update({"tax_type": "Purchase"})
 
@@ -850,7 +852,7 @@
 	return company_wise_info
 
 
-def get_party_shipping_address(doctype, name):
+def get_party_shipping_address(doctype: str, name: str) -> Optional[str]:
 	"""
 	Returns an Address name (best guess) for the given doctype and name for which `address_type == 'Shipping'` is true.
 	and/or `is_shipping_address = 1`.
@@ -861,22 +863,23 @@
 	:param name: Party name
 	:return: String
 	"""
-	out = frappe.db.sql(
-		"SELECT dl.parent "
-		"from `tabDynamic Link` dl join `tabAddress` ta on dl.parent=ta.name "
-		"where "
-		"dl.link_doctype=%s "
-		"and dl.link_name=%s "
-		"and dl.parenttype='Address' "
-		"and ifnull(ta.disabled, 0) = 0 and"
-		"(ta.address_type='Shipping' or ta.is_shipping_address=1) "
-		"order by ta.is_shipping_address desc, ta.address_type desc limit 1",
-		(doctype, name),
+	shipping_addresses = frappe.get_all(
+		"Address",
+		filters=[
+			["Dynamic Link", "link_doctype", "=", doctype],
+			["Dynamic Link", "link_name", "=", name],
+			["disabled", "=", 0],
+		],
+		or_filters=[
+			["is_shipping_address", "=", 1],
+			["address_type", "=", "Shipping"],
+		],
+		pluck="name",
+		limit=1,
+		order_by="is_shipping_address DESC",
 	)
-	if out:
-		return out[0][0]
-	else:
-		return ""
+
+	return shipping_addresses[0] if shipping_addresses else None
 
 
 def get_partywise_advanced_payment_amount(
@@ -910,31 +913,32 @@
 		return frappe._dict(data)
 
 
-def get_default_contact(doctype, name):
+def get_default_contact(doctype: str, name: str) -> Optional[str]:
 	"""
-	Returns default contact for the given doctype and name.
-	Can be ordered by `contact_type` to either is_primary_contact or is_billing_contact.
+	Returns contact name only if there is a primary contact for given doctype and name.
+
+	Else returns None
+
+	:param doctype: Party Doctype
+	:param name: Party name
+	:return: String
 	"""
-	out = frappe.db.sql(
-		"""
-			SELECT dl.parent, c.is_primary_contact, c.is_billing_contact
-			FROM `tabDynamic Link` dl
-			INNER JOIN `tabContact` c ON c.name = dl.parent
-			WHERE
-				dl.link_doctype=%s AND
-				dl.link_name=%s AND
-				dl.parenttype = 'Contact'
-			ORDER BY is_primary_contact DESC, is_billing_contact DESC
-		""",
-		(doctype, name),
+	contacts = frappe.get_all(
+		"Contact",
+		filters=[
+			["Dynamic Link", "link_doctype", "=", doctype],
+			["Dynamic Link", "link_name", "=", name],
+		],
+		or_filters=[
+			["is_primary_contact", "=", 1],
+			["is_billing_contact", "=", 1],
+		],
+		pluck="name",
+		limit=1,
+		order_by="is_primary_contact DESC, is_billing_contact DESC",
 	)
-	if out:
-		try:
-			return out[0][0]
-		except Exception:
-			return None
-	else:
-		return None
+
+	return contacts[0] if contacts else None
 
 
 def add_party_account(party_type, party, company, account):
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 11de9a0..30f7fb3 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -181,6 +181,16 @@
 				return
 
 		key = (ple.against_voucher_type, ple.against_voucher_no, ple.party)
+
+		# If payment is made against credit note
+		# and credit note is made against a Sales Invoice
+		# then consider the payment against original sales invoice.
+		if ple.against_voucher_type in ("Sales Invoice", "Purchase Invoice"):
+			if ple.against_voucher_no in self.return_entries:
+				return_against = self.return_entries.get(ple.against_voucher_no)
+				if return_against:
+					key = (ple.against_voucher_type, return_against, ple.party)
+
 		row = self.voucher_balance.get(key)
 
 		if not row:
@@ -610,7 +620,7 @@
 
 	def get_return_entries(self):
 		doctype = "Sales Invoice" if self.party_type == "Customer" else "Purchase Invoice"
-		filters = {"is_return": 1, "docstatus": 1}
+		filters = {"is_return": 1, "docstatus": 1, "company": self.filters.company}
 		party_field = scrub(self.filters.party_type)
 		if self.filters.get(party_field):
 			filters.update({party_field: self.filters.get(party_field)})
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index afd02a0..6f1889b 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -210,6 +210,67 @@
 			],
 		)
 
+	def test_payment_against_credit_note(self):
+		"""
+		Payment against credit/debit note should be considered against the parent invoice
+		"""
+		company = "_Test Company 2"
+		customer = "_Test Customer 2"
+
+		si1 = make_sales_invoice()
+
+		pe = get_payment_entry("Sales Invoice", si1.name, bank_account="Cash - _TC2")
+		pe.paid_from = "Debtors - _TC2"
+		pe.insert()
+		pe.submit()
+
+		cr_note = make_credit_note(si1.name)
+
+		si2 = make_sales_invoice()
+
+		# manually link cr_note with si2 using journal entry
+		je = frappe.new_doc("Journal Entry")
+		je.company = company
+		je.voucher_type = "Credit Note"
+		je.posting_date = today()
+
+		debit_account = "Debtors - _TC2"
+		debit_entry = {
+			"account": debit_account,
+			"party_type": "Customer",
+			"party": customer,
+			"debit": 100,
+			"debit_in_account_currency": 100,
+			"reference_type": cr_note.doctype,
+			"reference_name": cr_note.name,
+			"cost_center": "Main - _TC2",
+		}
+		credit_entry = {
+			"account": debit_account,
+			"party_type": "Customer",
+			"party": customer,
+			"credit": 100,
+			"credit_in_account_currency": 100,
+			"reference_type": si2.doctype,
+			"reference_name": si2.name,
+			"cost_center": "Main - _TC2",
+		}
+
+		je.append("accounts", debit_entry)
+		je.append("accounts", credit_entry)
+		je = je.save().submit()
+
+		filters = {
+			"company": company,
+			"report_date": today(),
+			"range1": 30,
+			"range2": 60,
+			"range3": 90,
+			"range4": 120,
+		}
+		report = execute(filters)
+		self.assertEqual(report[1], [])
+
 
 def make_sales_invoice(no_payment_schedule=False, do_not_submit=False):
 	frappe.set_user("Administrator")
@@ -256,7 +317,7 @@
 
 
 def make_credit_note(docname):
-	create_sales_invoice(
+	credit_note = create_sales_invoice(
 		company="_Test Company 2",
 		customer="_Test Customer 2",
 		currency="EUR",
@@ -269,3 +330,5 @@
 		is_return=1,
 		return_against=docname,
 	)
+
+	return credit_note
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
index dd9c073..0ebe13f 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
@@ -399,8 +399,9 @@
 			`tabSales Invoice`.posting_date, `tabSales Invoice`.debit_to,
 			`tabSales Invoice`.unrealized_profit_loss_account,
 			`tabSales Invoice`.is_internal_customer,
-			`tabSales Invoice`.project, `tabSales Invoice`.customer, `tabSales Invoice`.remarks,
+			`tabSales Invoice`.customer, `tabSales Invoice`.remarks,
 			`tabSales Invoice`.territory, `tabSales Invoice`.company, `tabSales Invoice`.base_net_total,
+			`tabSales Invoice Item`.project,
 			`tabSales Invoice Item`.item_code, `tabSales Invoice Item`.description,
 			`tabSales Invoice Item`.`item_name`, `tabSales Invoice Item`.`item_group`,
 			`tabSales Invoice Item`.sales_order, `tabSales Invoice Item`.delivery_note,
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index c64b917..bfef57e 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -513,18 +513,22 @@
 			},
 			item=asset,
 		),
-		asset.get_gl_dict(
-			{
-				"account": accumulated_depr_account,
-				"debit_in_account_currency": accumulated_depr_amount,
-				"debit": accumulated_depr_amount,
-				"cost_center": depreciation_cost_center,
-				"posting_date": date,
-			},
-			item=asset,
-		),
 	]
 
+	if accumulated_depr_amount:
+		gl_entries.append(
+			asset.get_gl_dict(
+				{
+					"account": accumulated_depr_account,
+					"debit_in_account_currency": accumulated_depr_amount,
+					"debit": accumulated_depr_amount,
+					"cost_center": depreciation_cost_center,
+					"posting_date": date,
+				},
+				item=asset,
+			),
+		)
+
 	profit_amount = flt(selling_amount) - flt(value_after_depreciation)
 	if profit_amount:
 		get_profit_gl_entries(
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index c64f296..2a74f20 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -812,14 +812,14 @@
 			number_of_depreciations_booked=1,
 			opening_accumulated_depreciation=50000,
 			expected_value_after_useful_life=10000,
-			depreciation_start_date="2030-12-31",
+			depreciation_start_date="2031-12-31",
 			total_number_of_depreciations=3,
 			frequency_of_depreciation=12,
 		)
 
 		self.assertEqual(asset.status, "Draft")
 
-		expected_schedules = [["2030-12-31", 33333.50, 83333.50], ["2031-12-31", 6666.50, 90000.0]]
+		expected_schedules = [["2031-12-31", 33333.50, 83333.50], ["2032-12-31", 6666.50, 90000.0]]
 
 		schedules = [
 			[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
@@ -1804,7 +1804,7 @@
 	company.save()
 
 	# Enable booking asset depreciation entry automatically
-	frappe.db.set_value("Accounts Settings", None, "book_asset_depreciation_entry_automatically", 1)
+	frappe.db.set_single_value("Accounts Settings", "book_asset_depreciation_entry_automatically", 1)
 
 
 def enable_cwip_accounting(asset_category, enable=1):
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
index 5a37685..01fcb11 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
@@ -65,6 +65,18 @@
 			};
 		});
 
+		me.frm.set_query("serial_and_batch_bundle", "stock_items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
 		me.frm.set_query("item_code", "stock_items", function() {
 			return erpnext.queries.item({"is_stock_item": 1});
 		});
@@ -100,6 +112,17 @@
 				}
 			};
 		});
+
+		let sbb_field = me.frm.get_docfield('stock_items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'warehouse': row.doc.warehouse,
+					'voucher_type': me.frm.doc.doctype,
+				}
+			};
+		}
 	}
 
 	target_item_code() {
diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
index 982d376..deae8c7 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -10,6 +10,7 @@
 	cint,
 	date_diff,
 	flt,
+	get_first_day,
 	get_last_day,
 	getdate,
 	is_last_day_of_the_month,
@@ -271,8 +272,14 @@
 				break
 
 			# For first row
-			if n == 0 and has_pro_rata and not self.opening_accumulated_depreciation:
-				from_date = add_days(asset_doc.available_for_use_date, -1)
+			if (
+				n == 0
+				and (has_pro_rata or has_wdv_or_dd_non_yearly_pro_rata)
+				and not self.opening_accumulated_depreciation
+			):
+				from_date = add_days(
+					asset_doc.available_for_use_date, -1
+				)  # needed to calc depr amount for available_for_use_date too
 				depreciation_amount, days, months = _get_pro_rata_amt(
 					row,
 					depreciation_amount,
@@ -281,10 +288,18 @@
 					has_wdv_or_dd_non_yearly_pro_rata,
 				)
 			elif n == 0 and has_wdv_or_dd_non_yearly_pro_rata and self.opening_accumulated_depreciation:
-				from_date = add_months(
-					getdate(asset_doc.available_for_use_date),
-					(self.number_of_depreciations_booked * row.frequency_of_depreciation),
-				)
+				if not is_first_day_of_the_month(getdate(asset_doc.available_for_use_date)):
+					from_date = get_last_day(
+						add_months(
+							getdate(asset_doc.available_for_use_date),
+							((self.number_of_depreciations_booked - 1) * row.frequency_of_depreciation),
+						)
+					)
+				else:
+					from_date = add_months(
+						getdate(add_days(asset_doc.available_for_use_date, -1)),
+						(self.number_of_depreciations_booked * row.frequency_of_depreciation),
+					)
 				depreciation_amount, days, months = _get_pro_rata_amt(
 					row,
 					depreciation_amount,
@@ -702,3 +717,9 @@
 			["status", "=", status],
 		],
 	)
+
+
+def is_first_day_of_the_month(date):
+	first_day_of_the_month = get_first_day(date)
+
+	return getdate(first_day_of_the_month) == getdate(date)
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
index 8303141..641d35f 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
@@ -42,7 +42,6 @@
 				maintenance_log.db_set("maintenance_status", "Cancelled")
 
 
-@frappe.whitelist()
 def assign_tasks(asset_maintenance_name, assign_to_member, maintenance_task, next_due_date):
 	team_member = frappe.db.get_value("User", assign_to_member, "email")
 	args = {
diff --git a/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
index e40a551..23088c9 100644
--- a/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/test_asset_maintenance.py
@@ -182,4 +182,4 @@
 	company.save()
 
 	# Enable booking asset depreciation entry automatically
-	frappe.db.set_value("Accounts Settings", None, "book_asset_depreciation_entry_automatically", 1)
+	frappe.db.set_single_value("Accounts Settings", "book_asset_depreciation_entry_automatically", 1)
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js
index f9ed2cc..dae993a 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.js
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.js
@@ -28,6 +28,28 @@
 				}
 			};
 		};
+
+		frm.set_query("serial_and_batch_bundle", "stock_items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('stock_items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
 	},
 
 	refresh: function(frm) {
diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
index 4f7b836..b788a32 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
@@ -20,56 +20,6 @@
 			default: 'In Location'
 		},
 		{
-			"fieldname":"filter_based_on",
-			"label": __("Period Based On"),
-			"fieldtype": "Select",
-			"options": ["Fiscal Year", "Date Range"],
-			"default": "Fiscal Year",
-			"reqd": 1
-		},
-		{
-			"fieldname":"from_date",
-			"label": __("Start Date"),
-			"fieldtype": "Date",
-			"default": frappe.datetime.add_months(frappe.datetime.nowdate(), -12),
-			"depends_on": "eval: doc.filter_based_on == 'Date Range'",
-			"reqd": 1
-		},
-		{
-			"fieldname":"to_date",
-			"label": __("End Date"),
-			"fieldtype": "Date",
-			"default": frappe.datetime.nowdate(),
-			"depends_on": "eval: doc.filter_based_on == 'Date Range'",
-			"reqd": 1
-		},
-		{
-			"fieldname":"from_fiscal_year",
-			"label": __("Start Year"),
-			"fieldtype": "Link",
-			"options": "Fiscal Year",
-			"default": frappe.defaults.get_user_default("fiscal_year"),
-			"depends_on": "eval: doc.filter_based_on == 'Fiscal Year'",
-			"reqd": 1
-		},
-		{
-			"fieldname":"to_fiscal_year",
-			"label": __("End Year"),
-			"fieldtype": "Link",
-			"options": "Fiscal Year",
-			"default": frappe.defaults.get_user_default("fiscal_year"),
-			"depends_on": "eval: doc.filter_based_on == 'Fiscal Year'",
-			"reqd": 1
-		},
-		{
-			"fieldname":"date_based_on",
-			"label": __("Date Based On"),
-			"fieldtype": "Select",
-			"options": ["Purchase Date", "Available For Use Date"],
-			"default": "Purchase Date",
-			"reqd": 1
-		},
-		{
 			fieldname:"asset_category",
 			label: __("Asset Category"),
 			fieldtype: "Link",
@@ -90,21 +40,66 @@
 			reqd: 1
 		},
 		{
+			fieldname:"only_existing_assets",
+			label: __("Only existing assets"),
+			fieldtype: "Check"
+		},
+		{
 			fieldname:"finance_book",
 			label: __("Finance Book"),
 			fieldtype: "Link",
 			options: "Finance Book",
-			depends_on: "eval: doc.filter_by_finance_book == 1",
 		},
 		{
-			fieldname:"filter_by_finance_book",
-			label: __("Filter by Finance Book"),
-			fieldtype: "Check"
+			"fieldname": "include_default_book_assets",
+			"label": __("Include Default Book Assets"),
+			"fieldtype": "Check",
+			"default": 1
 		},
 		{
-			fieldname:"only_existing_assets",
-			label: __("Only existing assets"),
-			fieldtype: "Check"
+			"fieldname":"filter_based_on",
+			"label": __("Period Based On"),
+			"fieldtype": "Select",
+			"options": ["--Select a period--", "Fiscal Year", "Date Range"],
+			"default": "--Select a period--",
+		},
+		{
+			"fieldname":"from_date",
+			"label": __("Start Date"),
+			"fieldtype": "Date",
+			"default": frappe.datetime.add_months(frappe.datetime.nowdate(), -12),
+			"depends_on": "eval: doc.filter_based_on == 'Date Range'",
+		},
+		{
+			"fieldname":"to_date",
+			"label": __("End Date"),
+			"fieldtype": "Date",
+			"default": frappe.datetime.nowdate(),
+			"depends_on": "eval: doc.filter_based_on == 'Date Range'",
+		},
+		{
+			"fieldname":"from_fiscal_year",
+			"label": __("Start Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": frappe.defaults.get_user_default("fiscal_year"),
+			"depends_on": "eval: doc.filter_based_on == 'Fiscal Year'",
+		},
+		{
+			"fieldname":"to_fiscal_year",
+			"label": __("End Year"),
+			"fieldtype": "Link",
+			"options": "Fiscal Year",
+			"default": frappe.defaults.get_user_default("fiscal_year"),
+			"depends_on": "eval: doc.filter_based_on == 'Fiscal Year'",
+		},
+		{
+			"fieldname":"date_based_on",
+			"label": __("Date Based On"),
+			"fieldtype": "Select",
+			"options": ["Purchase Date", "Available For Use Date"],
+			"default": "Purchase Date",
+			"depends_on": "eval: doc.filter_based_on == 'Date Range' || doc.filter_based_on == 'Fiscal Year'",
 		},
 	]
 };
diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
index 984b3fd..f810819 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py
@@ -2,9 +2,11 @@
 # For license information, please see license.txt
 
 
+from itertools import chain
+
 import frappe
 from frappe import _
-from frappe.query_builder.functions import Sum
+from frappe.query_builder.functions import IfNull, Sum
 from frappe.utils import cstr, flt, formatdate, getdate
 
 from erpnext.accounts.report.financial_statements import (
@@ -13,7 +15,6 @@
 	validate_fiscal_year,
 )
 from erpnext.assets.doctype.asset.asset import get_asset_value_after_depreciation
-from erpnext.assets.doctype.asset.depreciation import get_depreciation_accounts
 
 
 def execute(filters=None):
@@ -64,11 +65,9 @@
 
 
 def get_data(filters):
-
 	data = []
 
 	conditions = get_conditions(filters)
-	depreciation_amount_map = get_finance_book_value_map(filters)
 	pr_supplier_map = get_purchase_receipt_supplier_map()
 	pi_supplier_map = get_purchase_invoice_supplier_map()
 
@@ -102,20 +101,27 @@
 		]
 		assets_record = frappe.db.get_all("Asset", filters=conditions, fields=fields)
 
-	assets_linked_to_fb = None
+	assets_linked_to_fb = get_assets_linked_to_fb(filters)
 
-	if filters.filter_by_finance_book:
-		assets_linked_to_fb = frappe.db.get_all(
-			doctype="Asset Finance Book",
-			filters={"finance_book": filters.finance_book or ("is", "not set")},
-			pluck="parent",
-		)
+	company_fb = frappe.get_cached_value("Company", filters.company, "default_finance_book")
+
+	if filters.include_default_book_assets and company_fb:
+		finance_book = company_fb
+	elif filters.finance_book:
+		finance_book = filters.finance_book
+	else:
+		finance_book = None
+
+	depreciation_amount_map = get_asset_depreciation_amount_map(filters, finance_book)
 
 	for asset in assets_record:
 		if assets_linked_to_fb and asset.asset_id not in assets_linked_to_fb:
 			continue
 
-		asset_value = get_asset_value_after_depreciation(asset.asset_id, filters.finance_book)
+		asset_value = get_asset_value_after_depreciation(
+			asset.asset_id, finance_book
+		) or get_asset_value_after_depreciation(asset.asset_id)
+
 		row = {
 			"asset_id": asset.asset_id,
 			"asset_name": asset.asset_name,
@@ -126,7 +132,7 @@
 			or pi_supplier_map.get(asset.purchase_invoice),
 			"gross_purchase_amount": asset.gross_purchase_amount,
 			"opening_accumulated_depreciation": asset.opening_accumulated_depreciation,
-			"depreciated_amount": get_depreciation_amount_of_asset(asset, depreciation_amount_map, filters),
+			"depreciated_amount": get_depreciation_amount_of_asset(asset, depreciation_amount_map),
 			"available_for_use_date": asset.available_for_use_date,
 			"location": asset.location,
 			"asset_category": asset.asset_category,
@@ -140,14 +146,23 @@
 
 def prepare_chart_data(data, filters):
 	labels_values_map = {}
-	date_field = frappe.scrub(filters.date_based_on)
+	if filters.filter_based_on not in ("Date Range", "Fiscal Year"):
+		filters_filter_based_on = "Date Range"
+		date_field = "purchase_date"
+		filters_from_date = min(data, key=lambda a: a.get(date_field)).get(date_field)
+		filters_to_date = max(data, key=lambda a: a.get(date_field)).get(date_field)
+	else:
+		filters_filter_based_on = filters.filter_based_on
+		date_field = frappe.scrub(filters.date_based_on)
+		filters_from_date = filters.from_date
+		filters_to_date = filters.to_date
 
 	period_list = get_period_list(
 		filters.from_fiscal_year,
 		filters.to_fiscal_year,
-		filters.from_date,
-		filters.to_date,
-		filters.filter_based_on,
+		filters_from_date,
+		filters_to_date,
+		filters_filter_based_on,
 		"Monthly",
 		company=filters.company,
 		ignore_fiscal_year=True,
@@ -184,59 +199,76 @@
 	}
 
 
-def get_depreciation_amount_of_asset(asset, depreciation_amount_map, filters):
-	if asset.calculate_depreciation:
-		depr_amount = depreciation_amount_map.get(asset.asset_id) or 0.0
-	else:
-		depr_amount = get_manual_depreciation_amount_of_asset(asset, filters)
+def get_assets_linked_to_fb(filters):
+	afb = frappe.qb.DocType("Asset Finance Book")
 
-	return flt(depr_amount, 2)
-
-
-def get_finance_book_value_map(filters):
-	date = filters.to_date if filters.filter_based_on == "Date Range" else filters.year_end_date
-
-	return frappe._dict(
-		frappe.db.sql(
-			""" Select
-		ads.asset, SUM(depreciation_amount)
-		FROM `tabAsset Depreciation Schedule` ads, `tabDepreciation Schedule` ds
-		WHERE
-			ds.parent = ads.name
-			AND ifnull(ads.finance_book, '')=%s
-			AND ads.docstatus=1
-			AND ds.parentfield='depreciation_schedule'
-			AND ds.schedule_date<=%s
-			AND ds.journal_entry IS NOT NULL
-		GROUP BY ads.asset""",
-			(cstr(filters.finance_book or ""), date),
-		)
+	query = frappe.qb.from_(afb).select(
+		afb.parent,
 	)
 
+	if filters.include_default_book_assets:
+		company_fb = frappe.get_cached_value("Company", filters.company, "default_finance_book")
 
-def get_manual_depreciation_amount_of_asset(asset, filters):
+		if filters.finance_book and company_fb and cstr(filters.finance_book) != cstr(company_fb):
+			frappe.throw(_("To use a different finance book, please uncheck 'Include Default Book Assets'"))
+
+		query = query.where(
+			(afb.finance_book.isin([cstr(filters.finance_book), cstr(company_fb), ""]))
+			| (afb.finance_book.isnull())
+		)
+	else:
+		query = query.where(
+			(afb.finance_book.isin([cstr(filters.finance_book), ""])) | (afb.finance_book.isnull())
+		)
+
+	assets_linked_to_fb = list(chain(*query.run(as_list=1)))
+
+	return assets_linked_to_fb
+
+
+def get_depreciation_amount_of_asset(asset, depreciation_amount_map):
+	return depreciation_amount_map.get(asset.asset_id) or 0.0
+
+
+def get_asset_depreciation_amount_map(filters, finance_book):
 	date = filters.to_date if filters.filter_based_on == "Date Range" else filters.year_end_date
 
-	(_, _, depreciation_expense_account) = get_depreciation_accounts(asset)
-
+	asset = frappe.qb.DocType("Asset")
 	gle = frappe.qb.DocType("GL Entry")
+	aca = frappe.qb.DocType("Asset Category Account")
+	company = frappe.qb.DocType("Company")
 
-	result = (
+	query = (
 		frappe.qb.from_(gle)
-		.select(Sum(gle.debit))
-		.where(gle.against_voucher == asset.asset_id)
-		.where(gle.account == depreciation_expense_account)
+		.join(asset)
+		.on(gle.against_voucher == asset.name)
+		.join(aca)
+		.on((aca.parent == asset.asset_category) & (aca.company_name == asset.company))
+		.join(company)
+		.on(company.name == asset.company)
+		.select(asset.name.as_("asset"), Sum(gle.debit).as_("depreciation_amount"))
+		.where(
+			gle.account == IfNull(aca.depreciation_expense_account, company.depreciation_expense_account)
+		)
 		.where(gle.debit != 0)
 		.where(gle.is_cancelled == 0)
-		.where(gle.posting_date <= date)
-	).run()
+		.where(asset.docstatus == 1)
+		.groupby(asset.name)
+	)
 
-	if result and result[0] and result[0][0]:
-		depr_amount = result[0][0]
+	if finance_book:
+		query = query.where(
+			(gle.finance_book.isin([cstr(finance_book), ""])) | (gle.finance_book.isnull())
+		)
 	else:
-		depr_amount = 0
+		query = query.where((gle.finance_book.isin([""])) | (gle.finance_book.isnull()))
 
-	return depr_amount
+	if filters.filter_based_on in ("Date Range", "Fiscal Year"):
+		query = query.where(gle.posting_date <= date)
+
+	asset_depr_amount_map = query.run()
+
+	return dict(asset_depr_amount_map)
 
 
 def get_purchase_receipt_supplier_map():
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 645abf2..b242108 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -322,6 +322,7 @@
    "fieldtype": "Small Text",
    "hidden": 1,
    "label": "Customer Mobile No",
+   "options": "Phone",
    "print_hide": 1
   },
   {
@@ -368,6 +369,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Contact Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1271,7 +1273,7 @@
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-05-24 11:16:41.195340",
+ "modified": "2023-06-03 16:19:45.710444",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Purchase Order",
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index 920486a..3edaffa 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -92,7 +92,7 @@
 
 		frappe.db.set_value("Item", "_Test Item", "over_delivery_receipt_allowance", 0)
 		frappe.db.set_value("Item", "_Test Item", "over_billing_allowance", 0)
-		frappe.db.set_value("Accounts Settings", None, "over_billing_allowance", 0)
+		frappe.db.set_single_value("Accounts Settings", "over_billing_allowance", 0)
 
 	def test_update_remove_child_linked_to_mr(self):
 		"""Test impact on linked PO and MR on deleting/updating row."""
@@ -581,7 +581,7 @@
 		)
 
 	def test_group_same_items(self):
-		frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
+		frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
 		frappe.get_doc(
 			{
 				"doctype": "Purchase Order",
@@ -836,8 +836,8 @@
 		)
 		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
 
-		frappe.db.set_value("Selling Settings", None, "maintain_same_sales_rate", 1)
-		frappe.db.set_value("Buying Settings", None, "maintain_same_rate", 1)
+		frappe.db.set_single_value("Selling Settings", "maintain_same_sales_rate", 1)
+		frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
 
 		prepare_data_for_internal_transfer()
 		supplier = "_Test Internal Supplier 2"
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 1bf7f58..f009789 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -457,7 +457,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-02-18 11:05:50.592270",
+ "modified": "2023-05-09 15:34:13.408932",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Supplier",
diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py
index b9fc344..7a205ac 100644
--- a/erpnext/buying/doctype/supplier/test_supplier.py
+++ b/erpnext/buying/doctype/supplier/test_supplier.py
@@ -156,7 +156,7 @@
 	def test_serach_fields_for_supplier(self):
 		from erpnext.controllers.queries import supplier_query
 
-		frappe.db.set_value("Buying Settings", None, "supp_master_name", "Naming Series")
+		frappe.db.set_single_value("Buying Settings", "supp_master_name", "Naming Series")
 
 		supplier_name = create_supplier(supplier_name="Test Supplier 1").name
 
@@ -189,7 +189,7 @@
 		self.assertEqual(data[0].supplier_type, "Company")
 		self.assertTrue("supplier_type" in data[0])
 
-		frappe.db.set_value("Buying Settings", None, "supp_master_name", "Supplier Name")
+		frappe.db.set_single_value("Buying Settings", "supp_master_name", "Supplier Name")
 
 
 def create_supplier(**args):
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
index 11ff91a..7b635b3 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json
@@ -230,6 +230,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -844,7 +845,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-14 16:43:41.714832",
+ "modified": "2023-06-03 16:20:15.880114",
  "modified_by": "Administrator",
  "module": "Buying",
  "name": "Supplier Quotation",
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py
index a8b76db..1967df2 100644
--- a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py
+++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py
@@ -99,7 +99,6 @@
 	return mod
 
 
-@frappe.whitelist()
 def make_supplier_scorecard(source_name, target_doc=None):
 	def update_criteria_fields(obj, target, source_parent):
 		target.max_score, target.formula = frappe.db.get_value(
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 2e290e3..c83e28d 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -917,6 +917,9 @@
 
 		return is_inclusive
 
+	def should_show_taxes_as_table_in_print(self):
+		return cint(frappe.db.get_single_value("Accounts Settings", "show_taxes_as_table_in_print"))
+
 	def validate_advance_entries(self):
 		order_field = "sales_order" if self.doctype == "Sales Invoice" else "purchase_order"
 		order_list = list(set(d.get(order_field) for d in self.get("items") if d.get(order_field)))
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index ad6a49a..fec494a 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -26,6 +26,8 @@
 		self.flags.ignore_permlevel_for_fields = ["buying_price_list", "price_list_currency"]
 
 	def validate(self):
+		self.set_rate_for_standalone_debit_note()
+
 		super(BuyingController, self).validate()
 		if getattr(self, "supplier", None) and not self.supplier_name:
 			self.supplier_name = frappe.db.get_value("Supplier", self.supplier, "supplier_name")
@@ -100,6 +102,30 @@
 						do_not_submit=True,
 					)
 
+	def set_rate_for_standalone_debit_note(self):
+		if self.get("is_return") and self.get("update_stock") and not self.return_against:
+			for row in self.items:
+
+				# override the rate with valuation rate
+				row.rate = get_incoming_rate(
+					{
+						"item_code": row.item_code,
+						"warehouse": row.warehouse,
+						"posting_date": self.get("posting_date"),
+						"posting_time": self.get("posting_time"),
+						"qty": row.qty,
+						"serial_and_batch_bundle": row.get("serial_and_batch_bundle"),
+						"company": self.company,
+						"voucher_type": self.doctype,
+						"voucher_no": self.name,
+					},
+					raise_error_if_no_rate=False,
+				)
+
+				row.discount_percentage = 0.0
+				row.discount_amount = 0.0
+				row.margin_rate_or_amount = 0.0
+
 	def set_missing_values(self, for_validate=False):
 		super(BuyingController, self).set_missing_values(for_validate)
 
@@ -472,7 +498,7 @@
 				continue
 
 			if d.warehouse:
-				pr_qty = flt(d.qty) * flt(d.conversion_factor)
+				pr_qty = flt(flt(d.qty) * flt(d.conversion_factor), d.precision("stock_qty"))
 
 				if pr_qty:
 
@@ -548,7 +574,7 @@
 						d,
 						{
 							"warehouse": d.rejected_warehouse,
-							"actual_qty": flt(d.rejected_qty) * flt(d.conversion_factor),
+							"actual_qty": flt(flt(d.rejected_qty) * flt(d.conversion_factor), d.precision("stock_qty")),
 							"incoming_rate": 0.0,
 							"serial_and_batch_bundle": d.rejected_serial_and_batch_bundle,
 						},
diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py
index d2c8096..c951154 100644
--- a/erpnext/controllers/print_settings.py
+++ b/erpnext/controllers/print_settings.py
@@ -30,10 +30,16 @@
 	doc.print_templates.update(
 		{
 			"total": "templates/print_formats/includes/total.html",
-			"taxes": "templates/print_formats/includes/taxes.html",
 		}
 	)
 
+	if not doc.should_show_taxes_as_table_in_print():
+		doc.print_templates.update(
+			{
+				"taxes": "templates/print_formats/includes/taxes.html",
+			}
+		)
+
 
 def format_columns(display_columns, compact_fields):
 	compact_fields = compact_fields + ["image", "item_code", "item_name"]
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 11cee28..818c789 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -660,6 +660,9 @@
 	if reference_voucher_detail_no:
 		filters["voucher_detail_no"] = reference_voucher_detail_no
 
+	if item_row and item_row.get("warehouse"):
+		filters["warehouse"] = item_row.get("warehouse")
+
 	return filters
 
 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index d319533..6f1a50d 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -43,7 +43,6 @@
 				self.set_serial_and_batch_bundle(table_field)
 
 	def set_missing_values(self, for_validate=False):
-
 		super(SellingController, self).set_missing_values(for_validate)
 
 		# set contact and address details for customer, if they are not mentioned
@@ -62,7 +61,7 @@
 		elif self.doctype == "Quotation" and self.party_name:
 			if self.quotation_to == "Customer":
 				customer = self.party_name
-			else:
+			elif self.quotation_to == "Lead":
 				lead = self.party_name
 
 		if customer:
diff --git a/erpnext/controllers/tests/test_subcontracting_controller.py b/erpnext/controllers/tests/test_subcontracting_controller.py
index 8a325e4..eeb35c4 100644
--- a/erpnext/controllers/tests/test_subcontracting_controller.py
+++ b/erpnext/controllers/tests/test_subcontracting_controller.py
@@ -1074,8 +1074,8 @@
 
 
 def set_backflush_based_on(based_on):
-	frappe.db.set_value(
-		"Buying Settings", None, "backflush_raw_materials_of_subcontract_based_on", based_on
+	frappe.db.set_single_value(
+		"Buying Settings", "backflush_raw_materials_of_subcontract_based_on", based_on
 	)
 
 
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index 2a588d8..a98886c 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -3,7 +3,10 @@
 
 import frappe
 from frappe import _
-from frappe.contacts.address_and_contact import load_address_and_contact
+from frappe.contacts.address_and_contact import (
+	delete_contact_and_address,
+	load_address_and_contact,
+)
 from frappe.email.inbox import link_communication_to_document
 from frappe.model.mapper import get_mapped_doc
 from frappe.utils import comma_and, get_link_to_form, has_gravatar, validate_email_address
@@ -40,9 +43,8 @@
 		self.update_prospect()
 
 	def on_trash(self):
-		frappe.db.sql("""update `tabIssue` set lead='' where lead=%s""", self.name)
-
-		self.unlink_dynamic_links()
+		frappe.db.set_value("Issue", {"lead": self.name}, "lead", None)
+		delete_contact_and_address(self.doctype, self.name)
 		self.remove_link_from_prospect()
 
 	def set_full_name(self):
@@ -119,27 +121,6 @@
 			)
 			lead_row.db_update()
 
-	def unlink_dynamic_links(self):
-		links = frappe.get_all(
-			"Dynamic Link",
-			filters={"link_doctype": self.doctype, "link_name": self.name},
-			fields=["parent", "parenttype"],
-		)
-
-		for link in links:
-			linked_doc = frappe.get_doc(link["parenttype"], link["parent"])
-
-			if len(linked_doc.get("links")) == 1:
-				linked_doc.delete(ignore_permissions=True)
-			else:
-				to_remove = None
-				for d in linked_doc.get("links"):
-					if d.link_doctype == self.doctype and d.link_name == self.name:
-						to_remove = d
-				if to_remove:
-					linked_doc.remove(to_remove)
-					linked_doc.save(ignore_permissions=True)
-
 	def remove_link_from_prospect(self):
 		prospects = self.get_linked_prospects()
 
diff --git a/erpnext/crm/doctype/opportunity/test_opportunity.py b/erpnext/crm/doctype/opportunity/test_opportunity.py
index 1ff3267..247e20d 100644
--- a/erpnext/crm/doctype/opportunity/test_opportunity.py
+++ b/erpnext/crm/doctype/opportunity/test_opportunity.py
@@ -53,9 +53,7 @@
 		self.assertEqual(opportunity_doc.total, 2200)
 
 	def test_carry_forward_of_email_and_comments(self):
-		frappe.db.set_value(
-			"CRM Settings", "CRM Settings", "carry_forward_communication_and_comments", 1
-		)
+		frappe.db.set_single_value("CRM Settings", "carry_forward_communication_and_comments", 1)
 		lead_doc = make_lead()
 		lead_doc.add_comment("Comment", text="Test Comment 1")
 		lead_doc.add_comment("Comment", text="Test Comment 2")
diff --git a/erpnext/crm/doctype/prospect/prospect.py b/erpnext/crm/doctype/prospect/prospect.py
index fbb1158..8b66a83 100644
--- a/erpnext/crm/doctype/prospect/prospect.py
+++ b/erpnext/crm/doctype/prospect/prospect.py
@@ -2,7 +2,10 @@
 # For license information, please see license.txt
 
 import frappe
-from frappe.contacts.address_and_contact import load_address_and_contact
+from frappe.contacts.address_and_contact import (
+	delete_contact_and_address,
+	load_address_and_contact,
+)
 from frappe.model.mapper import get_mapped_doc
 
 from erpnext.crm.utils import CRMNote, copy_comments, link_communications, link_open_events
@@ -16,7 +19,7 @@
 		self.link_with_lead_contact_and_address()
 
 	def on_trash(self):
-		self.unlink_dynamic_links()
+		delete_contact_and_address(self.doctype, self.name)
 
 	def after_insert(self):
 		carry_forward_communication_and_comments = frappe.db.get_single_value(
@@ -54,27 +57,6 @@
 					linked_doc.append("links", {"link_doctype": self.doctype, "link_name": self.name})
 					linked_doc.save(ignore_permissions=True)
 
-	def unlink_dynamic_links(self):
-		links = frappe.get_all(
-			"Dynamic Link",
-			filters={"link_doctype": self.doctype, "link_name": self.name},
-			fields=["parent", "parenttype"],
-		)
-
-		for link in links:
-			linked_doc = frappe.get_doc(link["parenttype"], link["parent"])
-
-			if len(linked_doc.get("links")) == 1:
-				linked_doc.delete(ignore_permissions=True)
-			else:
-				to_remove = None
-				for d in linked_doc.get("links"):
-					if d.link_doctype == self.doctype and d.link_name == self.name:
-						to_remove = d
-				if to_remove:
-					linked_doc.remove(to_remove)
-					linked_doc.save(ignore_permissions=True)
-
 
 @frappe.whitelist()
 def make_customer(source_name, target_doc=None):
diff --git a/erpnext/e_commerce/product_ui/list.js b/erpnext/e_commerce/product_ui/list.js
index 894a7cb..c8fd767 100644
--- a/erpnext/e_commerce/product_ui/list.js
+++ b/erpnext/e_commerce/product_ui/list.js
@@ -78,9 +78,10 @@
 		let title_html = `<div style="display: flex; margin-left: -15px;">`;
 		title_html += `
 			<div class="col-8" style="margin-right: -15px;">
-				<a class="" href="/${ item.route || '#' }"
-					style="color: var(--gray-800); font-weight: 500;">
+				<a href="/${ item.route || '#' }">
+					<div class="product-title">
 					${ title }
+					</div>
 				</a>
 			</div>
 		`;
@@ -201,4 +202,4 @@
 		}
 	}
 
-};
\ No newline at end of file
+};
diff --git a/erpnext/e_commerce/shopping_cart/test_shopping_cart.py b/erpnext/e_commerce/shopping_cart/test_shopping_cart.py
index f44f8fe..951039d 100644
--- a/erpnext/e_commerce/shopping_cart/test_shopping_cart.py
+++ b/erpnext/e_commerce/shopping_cart/test_shopping_cart.py
@@ -205,7 +205,7 @@
 
 		self.assertEqual(quote_doctstatus, 0)
 
-		frappe.db.set_value("E Commerce Settings", None, "save_quotations_as_draft", 0)
+		frappe.db.set_single_value("E Commerce Settings", "save_quotations_as_draft", 0)
 		frappe.local.shopping_cart_settings = None
 		update_cart("_Test Item", 1)
 		quote_name = request_for_quotation()  # Request for Quote
diff --git a/erpnext/e_commerce/variant_selector/utils.py b/erpnext/e_commerce/variant_selector/utils.py
index 1a3e737..4466c45 100644
--- a/erpnext/e_commerce/variant_selector/utils.py
+++ b/erpnext/e_commerce/variant_selector/utils.py
@@ -162,6 +162,7 @@
 		product_info = get_item_variant_price_dict(exact_match[0], cart_settings)
 
 		if product_info:
+			product_info["is_stock_item"] = frappe.get_cached_value("Item", exact_match[0], "is_stock_item")
 			product_info["allow_items_not_in_stock"] = cint(cart_settings.allow_items_not_in_stock)
 	else:
 		product_info = None
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
index e57a30a..61d2ace 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
@@ -161,7 +161,6 @@
 		frappe.throw(frappe.get_traceback())
 
 
-@frappe.whitelist()
 def sync_transactions(bank, bank_account):
 	"""Sync transactions based on the last integration date as the start date, after sync is completed
 	add the transaction date of the oldest transaction as the last integration date."""
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py
index 6d34a20..86e1b31 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py
@@ -32,7 +32,7 @@
 				frappe.delete_doc(doctype, d.name, force=True)
 
 	def test_plaid_disabled(self):
-		frappe.db.set_value("Plaid Settings", None, "enabled", 0)
+		frappe.db.set_single_value("Plaid Settings", "enabled", 0)
 		self.assertTrue(get_plaid_configuration() == "disabled")
 
 	def test_add_account_type(self):
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 77dbc8f..c821fcf 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -39,7 +39,10 @@
 setup_wizard_stages = "erpnext.setup.setup_wizard.setup_wizard.get_setup_stages"
 setup_wizard_test = "erpnext.setup.setup_wizard.test_setup_wizard.run_setup_wizard_test"
 
-before_install = "erpnext.setup.install.check_setup_wizard_not_completed"
+before_install = [
+	"erpnext.setup.install.check_setup_wizard_not_completed",
+	"erpnext.setup.install.check_frappe_version",
+]
 after_install = "erpnext.setup.install.after_install"
 
 boot_session = "erpnext.startup.boot.boot_session"
diff --git a/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py b/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py
index 4daa2ed..9cc6ec9 100644
--- a/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py
+++ b/erpnext/loan_management/doctype/loan_disbursement/test_loan_disbursement.py
@@ -160,4 +160,3 @@
 		interest = per_day_interest * 15
 
 		self.assertEqual(amounts["pending_principal_amount"], 1500000)
-		self.assertEqual(amounts["interest_amount"], flt(interest + previous_interest, 2))
diff --git a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py
index cac3f1f..ab4ea4c 100644
--- a/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py
+++ b/erpnext/loan_management/doctype/loan_interest_accrual/loan_interest_accrual.py
@@ -22,7 +22,7 @@
 			frappe.throw(_("Interest Amount or Principal Amount is mandatory"))
 
 		if not self.last_accrual_date:
-			self.last_accrual_date = get_last_accrual_date(self.loan)
+			self.last_accrual_date = get_last_accrual_date(self.loan, self.posting_date)
 
 	def on_submit(self):
 		self.make_gl_entries()
@@ -274,14 +274,14 @@
 
 
 def get_no_of_days_for_interest_accural(loan, posting_date):
-	last_interest_accrual_date = get_last_accrual_date(loan.name)
+	last_interest_accrual_date = get_last_accrual_date(loan.name, posting_date)
 
 	no_of_days = date_diff(posting_date or nowdate(), last_interest_accrual_date) + 1
 
 	return no_of_days
 
 
-def get_last_accrual_date(loan):
+def get_last_accrual_date(loan, posting_date):
 	last_posting_date = frappe.db.sql(
 		""" SELECT MAX(posting_date) from `tabLoan Interest Accrual`
 		WHERE loan = %s and docstatus = 1""",
@@ -289,12 +289,30 @@
 	)
 
 	if last_posting_date[0][0]:
+		last_interest_accrual_date = last_posting_date[0][0]
 		# interest for last interest accrual date is already booked, so add 1 day
-		return add_days(last_posting_date[0][0], 1)
+		last_disbursement_date = get_last_disbursement_date(loan, posting_date)
+
+		if last_disbursement_date and getdate(last_disbursement_date) > add_days(
+			getdate(last_interest_accrual_date), 1
+		):
+			last_interest_accrual_date = last_disbursement_date
+
+		return add_days(last_interest_accrual_date, 1)
 	else:
 		return frappe.db.get_value("Loan", loan, "disbursement_date")
 
 
+def get_last_disbursement_date(loan, posting_date):
+	last_disbursement_date = frappe.db.get_value(
+		"Loan Disbursement",
+		{"docstatus": 1, "against_loan": loan, "posting_date": ("<", posting_date)},
+		"MAX(posting_date)",
+	)
+
+	return last_disbursement_date
+
+
 def days_in_year(year):
 	days = 365
 
diff --git a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
index 8a185f8..82aab4a 100644
--- a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
+++ b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
@@ -101,7 +101,7 @@
 		if flt(self.total_interest_paid, precision) > flt(self.interest_payable, precision):
 			if not self.is_term_loan:
 				# get last loan interest accrual date
-				last_accrual_date = get_last_accrual_date(self.against_loan)
+				last_accrual_date = get_last_accrual_date(self.against_loan, self.posting_date)
 
 				# get posting date upto which interest has to be accrued
 				per_day_interest = get_per_day_interest(
@@ -725,7 +725,7 @@
 	if due_date:
 		pending_days = date_diff(posting_date, due_date) + 1
 	else:
-		last_accrual_date = get_last_accrual_date(against_loan_doc.name)
+		last_accrual_date = get_last_accrual_date(against_loan_doc.name, posting_date)
 		pending_days = date_diff(posting_date, last_accrual_date) + 1
 
 	if pending_days > 0:
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
index 4f89a67..08026d0 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json
@@ -152,6 +152,7 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -160,6 +161,7 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Contact Email",
+   "options": "Email",
    "print_hide": 1,
    "read_only": 1
   },
@@ -236,10 +238,11 @@
    "link_fieldname": "maintenance_schedule"
   }
  ],
- "modified": "2021-05-27 16:05:10.746465",
+ "modified": "2023-06-03 16:15:43.958072",
  "modified_by": "Administrator",
  "module": "Maintenance",
  "name": "Maintenance Schedule",
+ "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
   {
@@ -260,5 +263,6 @@
  "search_fields": "status,customer,customer_name",
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "timeline_field": "customer"
 }
\ No newline at end of file
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
index 4a6aa0a..b0d5cb8 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.json
@@ -101,6 +101,7 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -108,6 +109,7 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Contact Email",
+   "options": "Email",
    "read_only": 1
   },
   {
@@ -293,7 +295,7 @@
  "idx": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2021-12-17 03:10:27.608112",
+ "modified": "2023-06-03 16:19:07.902723",
  "modified_by": "Administrator",
  "module": "Maintenance",
  "name": "Maintenance Visit",
@@ -319,6 +321,7 @@
  "show_name_in_global_search": 1,
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "timeline_field": "customer",
  "title_field": "customer_name"
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py b/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py
index 7477f95..17b5aae 100644
--- a/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py
+++ b/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py
@@ -88,12 +88,14 @@
 				boms=boms,
 				timeout=40000,
 				now=frappe.flags.in_test,
+				enqueue_after_commit=True,
 			)
 		else:
 			frappe.enqueue(
 				method="erpnext.manufacturing.doctype.bom_update_log.bom_update_log.process_boms_cost_level_wise",
 				update_doc=self,
 				now=frappe.flags.in_test,
+				enqueue_after_commit=True,
 			)
 
 
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js
index 5305db3..8e9f542 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.js
+++ b/erpnext/manufacturing/doctype/job_card/job_card.js
@@ -12,6 +12,28 @@
 			};
 		});
 
+		frm.set_query("serial_and_batch_bundle", () => {
+			return {
+				filters: {
+					'item_code': frm.doc.production_item,
+					'voucher_type': frm.doc.doctype,
+					'voucher_no': ["in", [frm.doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = () => {
+				return {
+					'item_code': frm.doc.production_item,
+					'warehouse': frm.doc.wip_warehouse,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
+
 		frm.set_indicator_formatter('sub_operation',
 			function(doc) {
 				if (doc.status == "Pending") {
@@ -83,7 +105,7 @@
 			// and if stock mvt for WIP is required
 			if (frm.doc.work_order) {
 				frappe.db.get_value('Work Order', frm.doc.work_order, ['skip_transfer', 'status'], (result) => {
-					if (result.skip_transfer === 1 || result.status == 'In Process' || frm.doc.transferred_qty > 0) {
+					if (result.skip_transfer === 1 || result.status == 'In Process' || frm.doc.transferred_qty > 0 || !frm.doc.items.length) {
 						frm.trigger("prepare_timer_buttons");
 					}
 				});
@@ -411,6 +433,16 @@
 			}
 		});
 
+		if (frm.doc.total_completed_qty && frm.doc.for_quantity > frm.doc.total_completed_qty) {
+			let flt_precision = precision('for_quantity', frm.doc);
+			let process_loss_qty = (
+				flt(frm.doc.for_quantity, flt_precision)
+				- flt(frm.doc.total_completed_qty, flt_precision)
+			);
+
+			frm.set_value('process_loss_qty', process_loss_qty);
+		}
+
 		refresh_field("total_completed_qty");
 	}
 });
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.json b/erpnext/manufacturing/doctype/job_card/job_card.json
index f49f018..5d912fa 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.json
+++ b/erpnext/manufacturing/doctype/job_card/job_card.json
@@ -39,6 +39,7 @@
   "time_logs",
   "section_break_13",
   "total_completed_qty",
+  "process_loss_qty",
   "column_break_15",
   "total_time_in_mins",
   "section_break_8",
@@ -448,11 +449,17 @@
    "no_copy": 1,
    "options": "Serial and Batch Bundle",
    "print_hide": 1
+  },
+  {
+   "fieldname": "process_loss_qty",
+   "fieldtype": "Float",
+   "label": "Process Loss Qty",
+   "read_only": 1
   }
  ],
  "is_submittable": 1,
  "links": [],
- "modified": "2023-05-23 09:56:43.826602",
+ "modified": "2023-06-09 12:04:55.534264",
  "modified_by": "Administrator",
  "module": "Manufacturing",
  "name": "Job Card",
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py
index fcaa3fd..2c17568 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/job_card.py
@@ -451,6 +451,9 @@
 					},
 				)
 
+	def before_save(self):
+		self.set_process_loss()
+
 	def on_submit(self):
 		self.validate_transfer_qty()
 		self.validate_job_card()
@@ -487,19 +490,35 @@
 				)
 			)
 
-		if self.for_quantity and self.total_completed_qty != self.for_quantity:
+		precision = self.precision("total_completed_qty")
+		total_completed_qty = flt(
+			flt(self.total_completed_qty, precision) + flt(self.process_loss_qty, precision)
+		)
+
+		if self.for_quantity and flt(total_completed_qty, precision) != flt(
+			self.for_quantity, precision
+		):
 			total_completed_qty = bold(_("Total Completed Qty"))
 			qty_to_manufacture = bold(_("Qty to Manufacture"))
 
 			frappe.throw(
 				_("The {0} ({1}) must be equal to {2} ({3})").format(
 					total_completed_qty,
-					bold(self.total_completed_qty),
+					bold(flt(total_completed_qty, precision)),
 					qty_to_manufacture,
 					bold(self.for_quantity),
 				)
 			)
 
+	def set_process_loss(self):
+		precision = self.precision("total_completed_qty")
+
+		self.process_loss_qty = 0.0
+		if self.total_completed_qty and self.for_quantity > self.total_completed_qty:
+			self.process_loss_qty = flt(self.for_quantity, precision) - flt(
+				self.total_completed_qty, precision
+			)
+
 	def update_work_order(self):
 		if not self.work_order:
 			return
@@ -511,7 +530,7 @@
 		):
 			return
 
-		for_quantity, time_in_mins = 0, 0
+		for_quantity, time_in_mins, process_loss_qty = 0, 0, 0
 		from_time_list, to_time_list = [], []
 
 		field = "operation_id"
@@ -519,6 +538,7 @@
 		if data and len(data) > 0:
 			for_quantity = flt(data[0].completed_qty)
 			time_in_mins = flt(data[0].time_in_mins)
+			process_loss_qty = flt(data[0].process_loss_qty)
 
 		wo = frappe.get_doc("Work Order", self.work_order)
 
@@ -526,8 +546,8 @@
 			self.update_corrective_in_work_order(wo)
 
 		elif self.operation_id:
-			self.validate_produced_quantity(for_quantity, wo)
-			self.update_work_order_data(for_quantity, time_in_mins, wo)
+			self.validate_produced_quantity(for_quantity, process_loss_qty, wo)
+			self.update_work_order_data(for_quantity, process_loss_qty, time_in_mins, wo)
 
 	def update_corrective_in_work_order(self, wo):
 		wo.corrective_operation_cost = 0.0
@@ -542,11 +562,11 @@
 		wo.flags.ignore_validate_update_after_submit = True
 		wo.save()
 
-	def validate_produced_quantity(self, for_quantity, wo):
+	def validate_produced_quantity(self, for_quantity, process_loss_qty, wo):
 		if self.docstatus < 2:
 			return
 
-		if wo.produced_qty > for_quantity:
+		if wo.produced_qty > for_quantity + process_loss_qty:
 			first_part_msg = _(
 				"The {0} {1} is used to calculate the valuation cost for the finished good {2}."
 			).format(
@@ -561,7 +581,7 @@
 				_("{0} {1}").format(first_part_msg, second_part_msg), JobCardCancelError, title=_("Error")
 			)
 
-	def update_work_order_data(self, for_quantity, time_in_mins, wo):
+	def update_work_order_data(self, for_quantity, process_loss_qty, time_in_mins, wo):
 		workstation_hour_rate = frappe.get_value("Workstation", self.workstation, "hour_rate")
 		jc = frappe.qb.DocType("Job Card")
 		jctl = frappe.qb.DocType("Job Card Time Log")
@@ -582,6 +602,7 @@
 		for data in wo.operations:
 			if data.get("name") == self.operation_id:
 				data.completed_qty = for_quantity
+				data.process_loss_qty = process_loss_qty
 				data.actual_operation_time = time_in_mins
 				data.actual_start_time = time_data[0].start_time if time_data else None
 				data.actual_end_time = time_data[0].end_time if time_data else None
@@ -599,7 +620,11 @@
 	def get_current_operation_data(self):
 		return frappe.get_all(
 			"Job Card",
-			fields=["sum(total_time_in_mins) as time_in_mins", "sum(total_completed_qty) as completed_qty"],
+			fields=[
+				"sum(total_time_in_mins) as time_in_mins",
+				"sum(total_completed_qty) as completed_qty",
+				"sum(process_loss_qty) as process_loss_qty",
+			],
 			filters={
 				"docstatus": 1,
 				"work_order": self.work_order,
@@ -777,7 +802,7 @@
 
 		data = frappe.get_all(
 			"Work Order Operation",
-			fields=["operation", "status", "completed_qty"],
+			fields=["operation", "status", "completed_qty", "sequence_id"],
 			filters={"docstatus": 1, "parent": self.work_order, "sequence_id": ("<", self.sequence_id)},
 			order_by="sequence_id, idx",
 		)
@@ -795,6 +820,16 @@
 					OperationSequenceError,
 				)
 
+			if row.completed_qty < current_operation_qty:
+				msg = f"""The completed quantity {bold(current_operation_qty)}
+					of an operation {bold(self.operation)} cannot be greater
+					than the completed quantity {bold(row.completed_qty)}
+					of a previous operation
+					{bold(row.operation)}.
+				"""
+
+				frappe.throw(_(msg))
+
 	def validate_work_order(self):
 		if self.is_work_order_closed():
 			frappe.throw(_("You can't make any changes to Job Card since Work Order is closed."))
diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py
index a7f0648..e7fbcda 100644
--- a/erpnext/manufacturing/doctype/job_card/test_job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py
@@ -5,6 +5,7 @@
 from typing import Literal
 
 import frappe
+from frappe.test_runner import make_test_records
 from frappe.tests.utils import FrappeTestCase, change_settings
 from frappe.utils import random_string
 from frappe.utils.data import add_to_date, now, today
@@ -469,6 +470,119 @@
 		self.assertEqual(ste.from_bom, 1.0)
 		self.assertEqual(ste.bom_no, work_order.bom_no)
 
+	def test_job_card_proccess_qty_and_completed_qty(self):
+		from erpnext.manufacturing.doctype.routing.test_routing import (
+			create_routing,
+			setup_bom,
+			setup_operations,
+		)
+		from erpnext.manufacturing.doctype.work_order.work_order import (
+			make_stock_entry as make_stock_entry_for_wo,
+		)
+		from erpnext.stock.doctype.item.test_item import make_item
+		from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
+
+		operations = [
+			{"operation": "Test Operation A1", "workstation": "Test Workstation A", "time_in_mins": 30},
+			{"operation": "Test Operation B1", "workstation": "Test Workstation A", "time_in_mins": 20},
+		]
+
+		make_test_records("UOM")
+
+		warehouse = create_warehouse("Test Warehouse 123 for Job Card")
+
+		setup_operations(operations)
+
+		item_code = "Test Job Card Process Qty Item"
+		for item in [item_code, item_code + "RM 1", item_code + "RM 2"]:
+			if not frappe.db.exists("Item", item):
+				make_item(
+					item,
+					{
+						"item_name": item,
+						"stock_uom": "Nos",
+						"is_stock_item": 1,
+					},
+				)
+
+		routing_doc = create_routing(routing_name="Testing Route", operations=operations)
+		bom_doc = setup_bom(
+			item_code=item_code,
+			routing=routing_doc.name,
+			raw_materials=[item_code + "RM 1", item_code + "RM 2"],
+			source_warehouse=warehouse,
+		)
+
+		for row in bom_doc.items:
+			make_stock_entry(
+				item_code=row.item_code,
+				target=row.source_warehouse,
+				qty=10,
+				basic_rate=100,
+			)
+
+		wo_doc = make_wo_order_test_record(
+			production_item=item_code,
+			bom_no=bom_doc.name,
+			skip_transfer=1,
+			wip_warehouse=warehouse,
+			source_warehouse=warehouse,
+		)
+
+		for row in routing_doc.operations:
+			self.assertEqual(row.sequence_id, row.idx)
+
+		first_job_card = frappe.get_all(
+			"Job Card",
+			filters={"work_order": wo_doc.name, "sequence_id": 1},
+			fields=["name"],
+			order_by="sequence_id",
+			limit=1,
+		)[0].name
+
+		jc = frappe.get_doc("Job Card", first_job_card)
+		jc.time_logs[0].completed_qty = 8
+		jc.save()
+		jc.submit()
+
+		self.assertEqual(jc.process_loss_qty, 2)
+		self.assertEqual(jc.for_quantity, 10)
+
+		second_job_card = frappe.get_all(
+			"Job Card",
+			filters={"work_order": wo_doc.name, "sequence_id": 2},
+			fields=["name"],
+			order_by="sequence_id",
+			limit=1,
+		)[0].name
+
+		jc2 = frappe.get_doc("Job Card", second_job_card)
+		jc2.time_logs[0].completed_qty = 10
+
+		self.assertRaises(frappe.ValidationError, jc2.save)
+
+		jc2.load_from_db()
+		jc2.time_logs[0].completed_qty = 8
+		jc2.save()
+		jc2.submit()
+
+		self.assertEqual(jc2.for_quantity, 10)
+		self.assertEqual(jc2.process_loss_qty, 2)
+
+		s = frappe.get_doc(make_stock_entry_for_wo(wo_doc.name, "Manufacture", 10))
+		s.submit()
+
+		self.assertEqual(s.process_loss_qty, 2)
+
+		wo_doc.reload()
+		for row in wo_doc.operations:
+			self.assertEqual(row.completed_qty, 8)
+			self.assertEqual(row.process_loss_qty, 2)
+
+		self.assertEqual(wo_doc.produced_qty, 8)
+		self.assertEqual(wo_doc.process_loss_qty, 2)
+		self.assertEqual(wo_doc.status, "Completed")
+
 
 def create_bom_with_multiple_operations():
 	"Create a BOM with multiple operations and Material Transfer against Job Card"
diff --git a/erpnext/manufacturing/doctype/routing/test_routing.py b/erpnext/manufacturing/doctype/routing/test_routing.py
index 48f1851..a37ff28 100644
--- a/erpnext/manufacturing/doctype/routing/test_routing.py
+++ b/erpnext/manufacturing/doctype/routing/test_routing.py
@@ -141,6 +141,7 @@
 			routing=args.routing,
 			with_operations=1,
 			currency=args.currency,
+			source_warehouse=args.source_warehouse,
 		)
 	else:
 		bom_doc = frappe.get_doc("BOM", name)
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index 3c7c787..690fe47 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -503,10 +503,8 @@
 			stock_entry.cancel()
 
 	def test_capcity_planning(self):
-		frappe.db.set_value(
-			"Manufacturing Settings",
-			None,
-			{"disable_capacity_planning": 0, "capacity_planning_for_days": 1},
+		frappe.db.set_single_value(
+			"Manufacturing Settings", {"disable_capacity_planning": 0, "capacity_planning_for_days": 1}
 		)
 
 		data = frappe.get_cached_value(
@@ -529,7 +527,7 @@
 
 			self.assertRaises(CapacityError, work_order1.submit)
 
-			frappe.db.set_value("Manufacturing Settings", None, {"capacity_planning_for_days": 30})
+			frappe.db.set_single_value("Manufacturing Settings", {"capacity_planning_for_days": 30})
 
 			work_order1.reload()
 			work_order1.submit()
@@ -539,7 +537,7 @@
 			work_order.cancel()
 
 	def test_work_order_with_non_transfer_item(self):
-		frappe.db.set_value("Manufacturing Settings", None, "backflush_raw_materials_based_on", "BOM")
+		frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM")
 
 		items = {"Finished Good Transfer Item": 1, "_Test FG Item": 1, "_Test FG Item 1": 0}
 		for item, allow_transfer in items.items():
@@ -619,7 +617,7 @@
 		fg_item = "Test Batch Size Item For BOM 3"
 		rm1 = "Test Batch Size Item RM 1 For BOM 3"
 
-		frappe.db.set_value("Manufacturing Settings", None, "make_serial_no_batch_from_work_order", 0)
+		frappe.db.set_single_value("Manufacturing Settings", "make_serial_no_batch_from_work_order", 0)
 		for item in ["Test Batch Size Item For BOM 3", "Test Batch Size Item RM 1 For BOM 3"]:
 			item_args = {"include_item_in_manufacturing": 1, "is_stock_item": 1}
 
@@ -655,7 +653,7 @@
 		work_order = make_wo_order_test_record(
 			item=fg_item, skip_transfer=True, planned_start_date=now(), qty=1
 		)
-		frappe.db.set_value("Manufacturing Settings", None, "make_serial_no_batch_from_work_order", 1)
+		frappe.db.set_single_value("Manufacturing Settings", "make_serial_no_batch_from_work_order", 1)
 		ste1 = frappe.get_doc(make_stock_entry(work_order.name, "Manufacture", 1))
 		for row in ste1.get("items"):
 			if row.is_finished_item:
@@ -699,10 +697,10 @@
 
 		self.assertEqual(sorted(remaining_batches), sorted(batches))
 
-		frappe.db.set_value("Manufacturing Settings", None, "make_serial_no_batch_from_work_order", 0)
+		frappe.db.set_single_value("Manufacturing Settings", "make_serial_no_batch_from_work_order", 0)
 
 	def test_partial_material_consumption(self):
-		frappe.db.set_value("Manufacturing Settings", None, "material_consumption", 1)
+		frappe.db.set_single_value("Manufacturing Settings", "material_consumption", 1)
 		wo_order = make_wo_order_test_record(planned_start_date=now(), qty=4)
 
 		ste_cancel_list = []
@@ -736,13 +734,12 @@
 		for ste_doc in ste_cancel_list:
 			ste_doc.cancel()
 
-		frappe.db.set_value("Manufacturing Settings", None, "material_consumption", 0)
+		frappe.db.set_single_value("Manufacturing Settings", "material_consumption", 0)
 
 	def test_extra_material_transfer(self):
-		frappe.db.set_value("Manufacturing Settings", None, "material_consumption", 0)
-		frappe.db.set_value(
+		frappe.db.set_single_value("Manufacturing Settings", "material_consumption", 0)
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
@@ -787,7 +784,7 @@
 		for ste_doc in ste_cancel_list:
 			ste_doc.cancel()
 
-		frappe.db.set_value("Manufacturing Settings", None, "backflush_raw_materials_based_on", "BOM")
+		frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM")
 
 	def test_make_stock_entry_for_customer_provided_item(self):
 		finished_item = "Test Item for Make Stock Entry 1"
@@ -903,7 +900,7 @@
 		self.assertEqual(se.process_loss_qty, 1)
 
 		wo.load_from_db()
-		self.assertEqual(wo.status, "In Process")
+		self.assertEqual(wo.status, "Completed")
 
 	@timeout(seconds=60)
 	def test_job_card_scrap_item(self):
@@ -1087,9 +1084,8 @@
 	def test_partial_manufacture_entries(self):
 		cancel_stock_entry = []
 
-		frappe.db.set_value(
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
@@ -1139,7 +1135,7 @@
 			doc = frappe.get_doc("Stock Entry", ste)
 			doc.cancel()
 
-		frappe.db.set_value("Manufacturing Settings", None, "backflush_raw_materials_based_on", "BOM")
+		frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM")
 
 	@change_settings("Manufacturing Settings", {"make_serial_no_batch_from_work_order": 1})
 	def test_auto_batch_creation(self):
@@ -1283,9 +1279,8 @@
 		self.assertEqual(work_order.required_items[1].transferred_qty, 2)
 
 	def test_backflushed_batch_raw_materials_based_on_transferred(self):
-		frappe.db.set_value(
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
@@ -1356,9 +1351,8 @@
 			self.assertEqual(abs(d.qty), 2)
 
 	def test_backflushed_serial_no_raw_materials_based_on_transferred(self):
-		frappe.db.set_value(
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
@@ -1400,9 +1394,8 @@
 		self.assertEqual(manufacture_ste_doc2.items[0].qty, 2)
 
 	def test_backflushed_serial_no_batch_raw_materials_based_on_transferred(self):
-		frappe.db.set_value(
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
@@ -1486,9 +1479,8 @@
 		self.assertFalse(serial_nos)
 
 	def test_non_consumed_material_return_against_work_order(self):
-		frappe.db.set_value(
+		frappe.db.set_single_value(
 			"Manufacturing Settings",
-			None,
 			"backflush_raw_materials_based_on",
 			"Material Transferred for Manufacture",
 		)
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js
index d0c9966..c1a078d 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order.js
@@ -139,7 +139,7 @@
 		}
 
 		if (frm.doc.status != "Closed") {
-			if (frm.doc.docstatus === 1
+			if (frm.doc.docstatus === 1 && frm.doc.status !== "Completed"
 				&& frm.doc.operations && frm.doc.operations.length) {
 
 				const not_completed = frm.doc.operations.filter(d => {
@@ -256,6 +256,12 @@
 					label: __('Batch Size'),
 					read_only: 1
 				},
+				{
+					fieldtype: 'Int',
+					fieldname: 'sequence_id',
+					label: __('Sequence Id'),
+					read_only: 1
+				},
 			],
 			data: operations_data,
 			in_place_edit: true,
@@ -280,8 +286,8 @@
 
 		var pending_qty = 0;
 		frm.doc.operations.forEach(data => {
-			if(data.completed_qty != frm.doc.qty) {
-				pending_qty = frm.doc.qty - flt(data.completed_qty);
+			if(data.completed_qty + data.process_loss_qty != frm.doc.qty) {
+				pending_qty = frm.doc.qty - flt(data.completed_qty) - flt(data.process_loss_qty);
 
 				if (pending_qty) {
 					dialog.fields_dict.operations.df.data.push({
@@ -290,7 +296,8 @@
 						'workstation': data.workstation,
 						'batch_size': data.batch_size,
 						'qty': pending_qty,
-						'pending_qty': pending_qty
+						'pending_qty': pending_qty,
+						'sequence_id': data.sequence_id
 					});
 				}
 			}
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.json b/erpnext/manufacturing/doctype/work_order/work_order.json
index aecace6..a236f2a 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.json
+++ b/erpnext/manufacturing/doctype/work_order/work_order.json
@@ -46,8 +46,8 @@
   "required_items_section",
   "materials_and_operations_tab",
   "operations_section",
-  "operations",
   "transfer_material_against",
+  "operations",
   "time",
   "planned_start_date",
   "planned_end_date",
@@ -330,7 +330,6 @@
    "label": "Expected Delivery Date"
   },
   {
-   "collapsible": 1,
    "fieldname": "operations_section",
    "fieldtype": "Section Break",
    "label": "Operations",
@@ -591,7 +590,7 @@
  "image_field": "image",
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-06 12:35:12.149827",
+ "modified": "2023-06-09 13:20:09.154362",
  "modified_by": "Administrator",
  "module": "Manufacturing",
  "name": "Work Order",
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 3265b8f..bfdcf61 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -245,7 +245,9 @@
 				status = "Not Started"
 				if flt(self.material_transferred_for_manufacturing) > 0:
 					status = "In Process"
-				if flt(self.produced_qty) >= flt(self.qty):
+
+				total_qty = flt(self.produced_qty) + flt(self.process_loss_qty)
+				if flt(total_qty) >= flt(self.qty):
 					status = "Completed"
 		else:
 			status = "Cancelled"
@@ -761,13 +763,15 @@
 		max_allowed_qty_for_wo = flt(self.qty) + (allowance_percentage / 100 * flt(self.qty))
 
 		for d in self.get("operations"):
-			if not d.completed_qty:
+			precision = d.precision("completed_qty")
+			qty = flt(d.completed_qty, precision) + flt(d.process_loss_qty, precision)
+			if not qty:
 				d.status = "Pending"
-			elif flt(d.completed_qty) < flt(self.qty):
+			elif flt(qty) < flt(self.qty):
 				d.status = "Work in Progress"
-			elif flt(d.completed_qty) == flt(self.qty):
+			elif flt(qty) == flt(self.qty):
 				d.status = "Completed"
-			elif flt(d.completed_qty) <= max_allowed_qty_for_wo:
+			elif flt(qty) <= max_allowed_qty_for_wo:
 				d.status = "Completed"
 			else:
 				frappe.throw(_("Completed Qty cannot be greater than 'Qty to Manufacture'"))
diff --git a/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
index 31b9201..de1f67f 100644
--- a/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
+++ b/erpnext/manufacturing/doctype/work_order_operation/work_order_operation.json
@@ -2,12 +2,14 @@
  "actions": [],
  "creation": "2014-10-16 14:35:41.950175",
  "doctype": "DocType",
+ "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
   "details",
   "operation",
   "status",
   "completed_qty",
+  "process_loss_qty",
   "column_break_4",
   "bom",
   "workstation_type",
@@ -36,6 +38,7 @@
    "fieldtype": "Section Break"
   },
   {
+   "columns": 2,
    "fieldname": "operation",
    "fieldtype": "Link",
    "in_list_view": 1,
@@ -46,6 +49,7 @@
    "reqd": 1
   },
   {
+   "columns": 2,
    "fieldname": "bom",
    "fieldtype": "Link",
    "in_list_view": 1,
@@ -62,7 +66,7 @@
    "oldfieldtype": "Text"
   },
   {
-   "columns": 1,
+   "columns": 2,
    "description": "Operation completed for how many finished goods?",
    "fieldname": "completed_qty",
    "fieldtype": "Float",
@@ -80,6 +84,7 @@
    "options": "Pending\nWork in Progress\nCompleted"
   },
   {
+   "columns": 1,
    "fieldname": "workstation",
    "fieldtype": "Link",
    "in_list_view": 1,
@@ -115,7 +120,7 @@
    "fieldname": "time_in_mins",
    "fieldtype": "Float",
    "in_list_view": 1,
-   "label": "Operation Time",
+   "label": "Time",
    "oldfieldname": "time_in_mins",
    "oldfieldtype": "Currency",
    "reqd": 1
@@ -203,12 +208,21 @@
    "fieldtype": "Link",
    "label": "Workstation Type",
    "options": "Workstation Type"
+  },
+  {
+   "columns": 2,
+   "fieldname": "process_loss_qty",
+   "fieldtype": "Float",
+   "in_list_view": 1,
+   "label": "Process Loss Qty",
+   "no_copy": 1,
+   "read_only": 1
   }
  ],
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2022-11-09 01:37:56.563068",
+ "modified": "2023-06-09 14:03:01.612909",
  "modified_by": "Administrator",
  "module": "Manufacturing",
  "name": "Work Order Operation",
diff --git a/erpnext/manufacturing/report/process_loss_report/process_loss_report.py b/erpnext/manufacturing/report/process_loss_report/process_loss_report.py
index ce8f4f3..c3dd9cf 100644
--- a/erpnext/manufacturing/report/process_loss_report/process_loss_report.py
+++ b/erpnext/manufacturing/report/process_loss_report/process_loss_report.py
@@ -33,10 +33,9 @@
 			wo.name,
 			wo.status,
 			wo.production_item,
-			wo.qty,
 			wo.produced_qty,
 			wo.process_loss_qty,
-			(wo.produced_qty - wo.process_loss_qty).as_("actual_produced_qty"),
+			wo.qty.as_("qty_to_manufacture"),
 			Sum(se.total_incoming_value).as_("total_fg_value"),
 			Sum(se.total_outgoing_value).as_("total_rm_value"),
 		)
@@ -44,6 +43,7 @@
 			(wo.process_loss_qty > 0)
 			& (wo.company == filters.company)
 			& (se.docstatus == 1)
+			& (se.purpose == "Manufacture")
 			& (se.posting_date.between(filters.from_date, filters.to_date))
 		)
 		.groupby(se.work_order)
@@ -80,19 +80,29 @@
 		},
 		{"label": _("Status"), "fieldname": "status", "fieldtype": "Data", "width": "100"},
 		{
+			"label": _("Qty To Manufacture"),
+			"fieldname": "qty_to_manufacture",
+			"fieldtype": "Float",
+			"width": "150",
+		},
+		{
 			"label": _("Manufactured Qty"),
 			"fieldname": "produced_qty",
 			"fieldtype": "Float",
 			"width": "150",
 		},
-		{"label": _("Loss Qty"), "fieldname": "process_loss_qty", "fieldtype": "Float", "width": "150"},
 		{
-			"label": _("Actual Manufactured Qty"),
-			"fieldname": "actual_produced_qty",
+			"label": _("Process Loss Qty"),
+			"fieldname": "process_loss_qty",
 			"fieldtype": "Float",
 			"width": "150",
 		},
-		{"label": _("Loss Value"), "fieldname": "total_pl_value", "fieldtype": "Float", "width": "150"},
+		{
+			"label": _("Process Loss Value"),
+			"fieldname": "total_pl_value",
+			"fieldtype": "Float",
+			"width": "150",
+		},
 		{"label": _("FG Value"), "fieldname": "total_fg_value", "fieldtype": "Float", "width": "150"},
 		{
 			"label": _("Raw Material Value"),
@@ -105,5 +115,5 @@
 
 def update_data_with_total_pl_value(data: Data) -> None:
 	for row in data:
-		value_per_unit_fg = row["total_fg_value"] / row["actual_produced_qty"]
+		value_per_unit_fg = row["total_fg_value"] / row["qty_to_manufacture"]
 		row["total_pl_value"] = row["process_loss_qty"] * value_per_unit_fg
diff --git a/erpnext/patches/v11_0/update_backflush_subcontract_rm_based_on_bom.py b/erpnext/patches/v11_0/update_backflush_subcontract_rm_based_on_bom.py
index 51ba706..037dda5 100644
--- a/erpnext/patches/v11_0/update_backflush_subcontract_rm_based_on_bom.py
+++ b/erpnext/patches/v11_0/update_backflush_subcontract_rm_based_on_bom.py
@@ -7,8 +7,8 @@
 
 def execute():
 	frappe.reload_doc("buying", "doctype", "buying_settings")
-	frappe.db.set_value(
-		"Buying Settings", None, "backflush_raw_materials_of_subcontract_based_on", "BOM"
+	frappe.db.set_single_value(
+		"Buying Settings", "backflush_raw_materials_of_subcontract_based_on", "BOM"
 	)
 
 	frappe.reload_doc("stock", "doctype", "stock_entry_detail")
diff --git a/erpnext/patches/v12_0/rename_tolerance_fields.py b/erpnext/patches/v12_0/rename_tolerance_fields.py
index ef1ba65..c53604c 100644
--- a/erpnext/patches/v12_0/rename_tolerance_fields.py
+++ b/erpnext/patches/v12_0/rename_tolerance_fields.py
@@ -11,6 +11,6 @@
 	rename_field("Item", "tolerance", "over_delivery_receipt_allowance")
 
 	qty_allowance = frappe.db.get_single_value("Stock Settings", "over_delivery_receipt_allowance")
-	frappe.db.set_value("Accounts Settings", None, "over_delivery_receipt_allowance", qty_allowance)
+	frappe.db.set_single_value("Accounts Settings", "over_delivery_receipt_allowance", qty_allowance)
 
 	frappe.db.sql("update tabItem set over_billing_allowance=over_delivery_receipt_allowance")
diff --git a/erpnext/patches/v12_0/set_automatically_process_deferred_accounting_in_accounts_settings.py b/erpnext/patches/v12_0/set_automatically_process_deferred_accounting_in_accounts_settings.py
index 37af989..84dd1c7 100644
--- a/erpnext/patches/v12_0/set_automatically_process_deferred_accounting_in_accounts_settings.py
+++ b/erpnext/patches/v12_0/set_automatically_process_deferred_accounting_in_accounts_settings.py
@@ -4,6 +4,6 @@
 def execute():
 	frappe.reload_doc("accounts", "doctype", "accounts_settings")
 
-	frappe.db.set_value(
-		"Accounts Settings", None, "automatically_process_deferred_accounting_entry", 1
+	frappe.db.set_single_value(
+		"Accounts Settings", "automatically_process_deferred_accounting_entry", 1
 	)
diff --git a/erpnext/patches/v12_0/set_default_homepage_type.py b/erpnext/patches/v12_0/set_default_homepage_type.py
index d70b28e..d91fe33 100644
--- a/erpnext/patches/v12_0/set_default_homepage_type.py
+++ b/erpnext/patches/v12_0/set_default_homepage_type.py
@@ -2,4 +2,4 @@
 
 
 def execute():
-	frappe.db.set_value("Homepage", "Homepage", "hero_section_based_on", "Default")
+	frappe.db.set_single_value("Homepage", "hero_section_based_on", "Default")
diff --git a/erpnext/patches/v12_0/set_priority_for_support.py b/erpnext/patches/v12_0/set_priority_for_support.py
index a8a07e7..a16eb8a 100644
--- a/erpnext/patches/v12_0/set_priority_for_support.py
+++ b/erpnext/patches/v12_0/set_priority_for_support.py
@@ -46,7 +46,7 @@
 
 		frappe.reload_doc("support", "doctype", "service_level")
 		frappe.reload_doc("support", "doctype", "support_settings")
-		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
+		frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
 
 		for service_level in service_level_priorities:
 			if service_level:
diff --git a/erpnext/patches/v13_0/modify_invalid_gain_loss_gl_entries.py b/erpnext/patches/v13_0/modify_invalid_gain_loss_gl_entries.py
index 6c64ef6..0f77afd 100644
--- a/erpnext/patches/v13_0/modify_invalid_gain_loss_gl_entries.py
+++ b/erpnext/patches/v13_0/modify_invalid_gain_loss_gl_entries.py
@@ -47,7 +47,7 @@
 
 	acc_frozen_upto = frappe.db.get_value("Accounts Settings", None, "acc_frozen_upto")
 	if acc_frozen_upto:
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", None)
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", None)
 
 	for invoice in purchase_invoices + sales_invoices:
 		try:
@@ -65,4 +65,4 @@
 			print(f"Failed to correct gl entries of {invoice.name}")
 
 	if acc_frozen_upto:
-		frappe.db.set_value("Accounts Settings", None, "acc_frozen_upto", acc_frozen_upto)
+		frappe.db.set_single_value("Accounts Settings", "acc_frozen_upto", acc_frozen_upto)
diff --git a/erpnext/patches/v14_0/discount_accounting_separation.py b/erpnext/patches/v14_0/discount_accounting_separation.py
index 0d1349a..4216ecc 100644
--- a/erpnext/patches/v14_0/discount_accounting_separation.py
+++ b/erpnext/patches/v14_0/discount_accounting_separation.py
@@ -8,4 +8,4 @@
 	discount_account = data and int(data[0][0]) or 0
 	if discount_account:
 		for doctype in ["Buying Settings", "Selling Settings"]:
-			frappe.db.set_value(doctype, doctype, "enable_discount_accounting", 1, update_modified=False)
+			frappe.db.set_single_value(doctype, "enable_discount_accounting", 1, update_modified=False)
diff --git a/erpnext/patches/v14_0/migrate_crm_settings.py b/erpnext/patches/v14_0/migrate_crm_settings.py
index 696a100..2477255 100644
--- a/erpnext/patches/v14_0/migrate_crm_settings.py
+++ b/erpnext/patches/v14_0/migrate_crm_settings.py
@@ -11,8 +11,7 @@
 
 	frappe.reload_doc("crm", "doctype", "crm_settings")
 	if settings:
-		frappe.db.set_value(
-			"CRM Settings",
+		frappe.db.set_single_value(
 			"CRM Settings",
 			{
 				"campaign_naming_by": settings.campaign_naming_by,
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index b9f4ec6..333d4d9 100755
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -304,6 +304,7 @@
 @frappe.whitelist()
 def make_timesheet(source_name, target_doc=None, ignore_permissions=False):
 	def set_missing_values(source, target):
+		target.parent_project = source.project
 		target.append(
 			"time_logs",
 			{
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index 3d38aca..1bed541 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -2,8 +2,7 @@
 	"css/erpnext.css": [
 		"public/less/erpnext.less",
 		"public/scss/call_popup.scss",
-		"public/scss/point-of-sale.scss",
-		"public/scss/hierarchy_chart.scss"
+		"public/scss/point-of-sale.scss"
 	],
 	"js/erpnext-web.min.js": [
 		"public/js/website_utils.js",
@@ -37,7 +36,6 @@
 		"public/js/utils/dimension_tree_filter.js",
 		"public/js/telephony.js",
 		"public/js/templates/call_link.html",
-		"public/js/templates/node_card.html",
 		"public/js/bulk_transaction_processing.js"
 	],
 	"js/item-dashboard.min.js": [
@@ -62,10 +60,6 @@
 		"public/js/bank_reconciliation_tool/number_card.js",
 		"public/js/bank_reconciliation_tool/dialog_manager.js"
 	],
-	"js/hierarchy-chart.min.js": [
-		"public/js/hierarchy_chart/hierarchy_chart_desktop.js",
-		"public/js/hierarchy_chart/hierarchy_chart_mobile.js"
-	],
 	"js/e-commerce.min.js": [
 		"e_commerce/product_ui/views.js",
 		"e_commerce/product_ui/grid.js",
diff --git a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js
index 0cda938..5e5742a 100644
--- a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js
+++ b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js
@@ -40,8 +40,8 @@
 				name: __("Date"),
 				editable: false,
 				width: 100,
+				format: frappe.form.formatters.Date,
 			},
-
 			{
 				name: __("Party Type"),
 				editable: false,
@@ -117,17 +117,13 @@
 		return [
 			row["date"],
 			row["party_type"],
-			row["party"],
+			frappe.form.formatters.Link(row["party"], {options: row["party_type"]}),
 			row["description"],
 			row["deposit"],
 			row["withdrawal"],
 			row["unallocated_amount"],
 			row["reference_number"],
-			`
-			<Button class="btn btn-primary btn-xs center"  data-name = ${row["name"]} >
-				${__("Actions")}
-			</a>
-			`,
+			`<button class="btn btn-primary btn-xs center" data-name="${row["name"]}">${__("Actions")}</button>`
 		];
 	}
 
diff --git a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
index 1271e38..cbb64ca 100644
--- a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
+++ b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
@@ -76,30 +76,17 @@
 			callback: (result) => {
 				const data = result.message;
 
-
 				if (data && data.length > 0) {
 					const proposals_wrapper = this.dialog.fields_dict.payment_proposals.$wrapper;
 					proposals_wrapper.show();
 					this.dialog.fields_dict.no_matching_vouchers.$wrapper.hide();
-					this.data = [];
-					data.forEach((row) => {
-						const reference_date = row[5] ? row[5] : row[8];
-						this.data.push([
-							row[1],
-							row[2],
-							reference_date,
-							format_currency(row[3], row[9]),
-							row[4],
-							row[6],
-						]);
-					});
+					this.data = data.map((row) => this.format_row(row));
 					this.get_dt_columns();
 					this.get_datatable(proposals_wrapper);
 				} else {
 					const proposals_wrapper = this.dialog.fields_dict.payment_proposals.$wrapper;
 					proposals_wrapper.hide();
 					this.dialog.fields_dict.no_matching_vouchers.$wrapper.show();
-
 				}
 				this.dialog.show();
 			},
@@ -122,6 +109,7 @@
 				name: __("Reference Date"),
 				editable: false,
 				width: 120,
+				format: frappe.form.formatters.Date,
 			},
 			{
 				name: __("Remaining"),
@@ -141,6 +129,17 @@
 		];
 	}
 
+	format_row(row) {
+		return [
+			row[1], // Document Type
+			frappe.form.formatters.Link(row[2], {options: row[1]}), // Document Name
+			row[5] || row[8], // Reference Date
+			format_currency(row[3], row[9]), // Remaining
+			row[4], // Reference Number
+			row[6], // Party
+		];
+	}
+
 	get_datatable(proposals_wrapper) {
 		if (!this.datatable) {
 			const datatable_options = {
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index fd961c4..6f4e602 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -805,11 +805,13 @@
 			);
 		}
 
-		this.frm.doc.payments.find(pay => {
-			if (pay.default) {
-				pay.amount = total_amount_to_pay;
-			}
-		});
+		if(!this.frm.doc.is_return){
+			this.frm.doc.payments.find(payment => {
+				if (payment.default) {
+					payment.amount = total_amount_to_pay;
+				}
+			});
+		}
 
 		this.frm.refresh_fields();
 	}
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index a47d131..0d92683 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -130,9 +130,19 @@
 						'item_code': item_row.item_code,
 						'voucher_type': doc.doctype,
 						'voucher_no': ["in", [doc.name, ""]],
+						'is_cancelled': 0,
 					}
 				}
 			});
+
+			let sbb_field = this.frm.get_docfield('items', 'serial_and_batch_bundle');
+			if (sbb_field) {
+				sbb_field.get_route_options_for_new_doc = (row) => {
+					return {
+						'item_code': row.doc.item_code,
+					}
+				};
+			}
 		}
 
 		if(
@@ -2339,14 +2349,11 @@
 
 	frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
 		if (in_list(["Sales Invoice", "Delivery Note"], frm.doc.doctype)) {
-			item_row.outward = frm.doc.is_return ? 0 : 1;
+			item_row.type_of_transaction = frm.doc.is_return ? "Inward" : "Outward";
 		} else {
-			item_row.outward = frm.doc.is_return ? 1 : 0;
+			item_row.type_of_transaction = frm.doc.is_return ? "Outward" : "Inward";
 		}
 
-		item_row.type_of_transaction = (item_row.outward === 1
-			? "Outward":"Inward");
-
 		new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
 			if (r) {
 				let update_values = {
diff --git a/erpnext/public/js/hierarchy-chart.bundle.js b/erpnext/public/js/hierarchy-chart.bundle.js
deleted file mode 100644
index 0270313..0000000
--- a/erpnext/public/js/hierarchy-chart.bundle.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import "./hierarchy_chart/hierarchy_chart_desktop.js";
-import "./hierarchy_chart/hierarchy_chart_mobile.js";
-import "./templates/node_card.html";
diff --git a/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js b/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js
deleted file mode 100644
index a585aa6..0000000
--- a/erpnext/public/js/hierarchy_chart/hierarchy_chart_desktop.js
+++ /dev/null
@@ -1,608 +0,0 @@
-import html2canvas from 'html2canvas';
-erpnext.HierarchyChart = class {
-	/* Options:
-		- doctype
-		- wrapper: wrapper for the hierarchy view
-		- method:
-			- to get the data for each node
-			- this method should return id, name, title, image, and connections for each node
-	*/
-	constructor(doctype, wrapper, method) {
-		this.page = wrapper.page;
-		this.method = method;
-		this.doctype = doctype;
-
-		this.setup_page_style();
-		this.page.main.addClass('frappe-card');
-
-		this.nodes = {};
-		this.setup_node_class();
-	}
-
-	setup_page_style() {
-		this.page.main.css({
-			'min-height': '300px',
-			'max-height': '600px',
-			'overflow': 'auto',
-			'position': 'relative'
-		});
-	}
-
-	setup_node_class() {
-		let me = this;
-		this.Node = class {
-			constructor({
-				id, parent, parent_id, image, name, title, expandable, connections, is_root // eslint-disable-line
-			}) {
-				// to setup values passed via constructor
-				$.extend(this, arguments[0]);
-
-				this.expanded = 0;
-
-				me.nodes[this.id] = this;
-				me.make_node_element(this);
-
-				if (!me.all_nodes_expanded) {
-					me.setup_node_click_action(this);
-				}
-
-				me.setup_edit_node_action(this);
-			}
-		};
-	}
-
-	make_node_element(node) {
-		let node_card = frappe.render_template('node_card', {
-			id: node.id,
-			name: node.name,
-			title: node.title,
-			image: node.image,
-			parent: node.parent_id,
-			connections: node.connections,
-			is_mobile: false
-		});
-
-		node.parent.append(node_card);
-		node.$link = $(`[id="${node.id}"]`);
-	}
-
-	show() {
-		this.setup_actions();
-		if ($(`[data-fieldname="company"]`).length) return;
-		let me = this;
-
-		let company = this.page.add_field({
-			fieldtype: 'Link',
-			options: 'Company',
-			fieldname: 'company',
-			placeholder: __('Select Company'),
-			default: frappe.defaults.get_default('company'),
-			only_select: true,
-			reqd: 1,
-			change: () => {
-				me.company = undefined;
-				$('#hierarchy-chart-wrapper').remove();
-
-				if (company.get_value()) {
-					me.company = company.get_value();
-
-					// svg for connectors
-					me.make_svg_markers();
-					me.setup_hierarchy();
-					me.render_root_nodes();
-					me.all_nodes_expanded = false;
-				} else {
-					frappe.throw(__('Please select a company first.'));
-				}
-			}
-		});
-
-		company.refresh();
-		$(`[data-fieldname="company"]`).trigger('change');
-		$(`[data-fieldname="company"] .link-field`).css('z-index', 2);
-	}
-
-	setup_actions() {
-		let me = this;
-		this.page.clear_inner_toolbar();
-		this.page.add_inner_button(__('Export'), function() {
-			me.export_chart();
-		});
-
-		this.page.add_inner_button(__('Expand All'), function() {
-			me.load_children(me.root_node, true);
-			me.all_nodes_expanded = true;
-
-			me.page.remove_inner_button(__('Expand All'));
-			me.page.add_inner_button(__('Collapse All'), function() {
-				me.setup_hierarchy();
-				me.render_root_nodes();
-				me.all_nodes_expanded = false;
-
-				me.page.remove_inner_button(__('Collapse All'));
-				me.setup_actions();
-			});
-		});
-	}
-
-	export_chart() {
-		frappe.dom.freeze(__('Exporting...'));
-		this.page.main.css({
-			'min-height': '',
-			'max-height': '',
-			'overflow': 'visible',
-			'position': 'fixed',
-			'left': '0',
-			'top': '0'
-		});
-
-		$('.node-card').addClass('exported');
-
-		html2canvas(document.querySelector('#hierarchy-chart-wrapper'), {
-			scrollY: -window.scrollY,
-			scrollX: 0
-		}).then(function(canvas) {
-			// Export the canvas to its data URI representation
-			let dataURL = canvas.toDataURL('image/png');
-
-			// download the image
-			let a = document.createElement('a');
-			a.href = dataURL;
-			a.download = 'hierarchy_chart';
-			a.click();
-		}).finally(() => {
-			frappe.dom.unfreeze();
-		});
-
-		this.setup_page_style();
-		$('.node-card').removeClass('exported');
-	}
-
-	setup_hierarchy() {
-		if (this.$hierarchy)
-			this.$hierarchy.remove();
-
-		$(`#connectors`).empty();
-
-		// setup hierarchy
-		this.$hierarchy = $(
-			`<ul class="hierarchy">
-				<li class="root-level level">
-					<ul class="node-children"></ul>
-				</li>
-			</ul>`);
-
-		this.page.main
-			.find('#hierarchy-chart')
-			.empty()
-			.append(this.$hierarchy);
-
-		this.nodes = {};
-	}
-
-	make_svg_markers() {
-		$('#hierarchy-chart-wrapper').remove();
-
-		this.page.main.append(`
-			<div id="hierarchy-chart-wrapper">
-				<svg id="arrows" width="100%" height="100%">
-					<defs>
-						<marker id="arrowhead-active" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="6" markerHeight="6" orient="auto" fill="var(--blue-500)">
-							<path d="M 0 0 L 10 5 L 0 10 z"></path>
-						</marker>
-						<marker id="arrowhead-collapsed" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="6" markerHeight="6" orient="auto" fill="var(--blue-300)">
-							<path d="M 0 0 L 10 5 L 0 10 z"></path>
-						</marker>
-
-						<marker id="arrowstart-active" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="8" markerHeight="8" orient="auto" fill="var(--blue-500)">
-							<circle cx="4" cy="4" r="3.5" fill="white" stroke="var(--blue-500)"/>
-						</marker>
-						<marker id="arrowstart-collapsed" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="8" markerHeight="8" orient="auto" fill="var(--blue-300)">
-							<circle cx="4" cy="4" r="3.5" fill="white" stroke="var(--blue-300)"/>
-						</marker>
-					</defs>
-					<g id="connectors" fill="none">
-					</g>
-				</svg>
-				<div id="hierarchy-chart">
-				</div>
-			</div>`);
-	}
-
-	render_root_nodes(expanded_view=false) {
-		let me = this;
-
-		return frappe.call({
-			method: me.method,
-			args: {
-				company: me.company
-			}
-		}).then(r => {
-			if (r.message.length) {
-				let expand_node = undefined;
-				let node = undefined;
-
-				$.each(r.message, (_i, data) => {
-					if ($(`[id="${data.id}"]`).length)
-						return;
-
-					node = new me.Node({
-						id: data.id,
-						parent: $('<li class="child-node"></li>').appendTo(me.$hierarchy.find('.node-children')),
-						parent_id: undefined,
-						image: data.image,
-						name: data.name,
-						title: data.title,
-						expandable: true,
-						connections: data.connections,
-						is_root: true
-					});
-
-					if (!expand_node && data.connections)
-						expand_node = node;
-				});
-
-				me.root_node = expand_node;
-				if (!expanded_view) {
-					me.expand_node(expand_node);
-				}
-			}
-		});
-	}
-
-	expand_node(node) {
-		const is_sibling = this.selected_node && this.selected_node.parent_id === node.parent_id;
-		this.set_selected_node(node);
-		this.show_active_path(node);
-		this.collapse_previous_level_nodes(node);
-
-		// since the previous node collapses, all connections to that node need to be rebuilt
-		// if a sibling node is clicked, connections don't need to be rebuilt
-		if (!is_sibling) {
-			// rebuild outgoing connections
-			this.refresh_connectors(node.parent_id);
-
-			// rebuild incoming connections
-			let grandparent = $(`[id="${node.parent_id}"]`).attr('data-parent');
-			this.refresh_connectors(grandparent);
-		}
-
-		if (node.expandable && !node.expanded) {
-			return this.load_children(node);
-		}
-	}
-
-	collapse_node() {
-		if (this.selected_node.expandable) {
-			this.selected_node.$children.hide();
-			$(`path[data-parent="${this.selected_node.id}"]`).hide();
-			this.selected_node.expanded = false;
-		}
-	}
-
-	show_active_path(node) {
-		// mark node parent on active path
-		$(`[id="${node.parent_id}"]`).addClass('active-path');
-	}
-
-	load_children(node, deep=false) {
-		if (!deep) {
-			frappe.run_serially([
-				() => this.get_child_nodes(node.id),
-				(child_nodes) => this.render_child_nodes(node, child_nodes)
-			]);
-		} else {
-			frappe.run_serially([
-				() => frappe.dom.freeze(),
-				() => this.setup_hierarchy(),
-				() => this.render_root_nodes(true),
-				() => this.get_all_nodes(),
-				(data_list) => this.render_children_of_all_nodes(data_list),
-				() => frappe.dom.unfreeze()
-			]);
-		}
-	}
-
-	get_child_nodes(node_id) {
-		let me = this;
-		return new Promise(resolve => {
-			frappe.call({
-				method: me.method,
-				args: {
-					parent: node_id,
-					company: me.company
-				}
-			}).then(r => resolve(r.message));
-		});
-	}
-
-	render_child_nodes(node, child_nodes) {
-		const last_level = this.$hierarchy.find('.level:last').index();
-		const current_level = $(`[id="${node.id}"]`).parent().parent().parent().index();
-
-		if (last_level === current_level) {
-			this.$hierarchy.append(`
-				<li class="level"></li>
-			`);
-		}
-
-		if (!node.$children) {
-			node.$children = $('<ul class="node-children"></ul>')
-				.hide()
-				.appendTo(this.$hierarchy.find('.level:last'));
-
-			node.$children.empty();
-
-			if (child_nodes) {
-				$.each(child_nodes, (_i, data) => {
-					if (!$(`[id="${data.id}"]`).length) {
-						this.add_node(node, data);
-						setTimeout(() => {
-							this.add_connector(node.id, data.id);
-						}, 250);
-					}
-				});
-			}
-		}
-
-		node.$children.show();
-		$(`path[data-parent="${node.id}"]`).show();
-		node.expanded = true;
-	}
-
-	get_all_nodes() {
-		let me = this;
-		return new Promise(resolve => {
-			frappe.call({
-				method: 'erpnext.utilities.hierarchy_chart.get_all_nodes',
-				args: {
-					method: me.method,
-					company: me.company
-				},
-				callback: (r) => {
-					resolve(r.message);
-				}
-			});
-		});
-	}
-
-	render_children_of_all_nodes(data_list) {
-		let entry = undefined;
-		let node = undefined;
-
-		while (data_list.length) {
-			// to avoid overlapping connectors
-			entry = data_list.shift();
-			node = this.nodes[entry.parent];
-			if (node) {
-				this.render_child_nodes_for_expanded_view(node, entry.data);
-			} else if (data_list.length) {
-				data_list.push(entry);
-			}
-		}
-	}
-
-	render_child_nodes_for_expanded_view(node, child_nodes) {
-		node.$children = $('<ul class="node-children"></ul>');
-
-		const last_level = this.$hierarchy.find('.level:last').index();
-		const node_level = $(`[id="${node.id}"]`).parent().parent().parent().index();
-
-		if (last_level === node_level) {
-			this.$hierarchy.append(`
-				<li class="level"></li>
-			`);
-			node.$children.appendTo(this.$hierarchy.find('.level:last'));
-		} else {
-			node.$children.appendTo(this.$hierarchy.find('.level:eq(' + (node_level + 1) + ')'));
-		}
-
-		node.$children.hide().empty();
-
-		if (child_nodes) {
-			$.each(child_nodes, (_i, data) => {
-				this.add_node(node, data);
-				setTimeout(() => {
-					this.add_connector(node.id, data.id);
-				}, 250);
-			});
-		}
-
-		node.$children.show();
-		$(`path[data-parent="${node.id}"]`).show();
-		node.expanded = true;
-	}
-
-	add_node(node, data) {
-		return new this.Node({
-			id: data.id,
-			parent: $('<li class="child-node"></li>').appendTo(node.$children),
-			parent_id: node.id,
-			image: data.image,
-			name: data.name,
-			title: data.title,
-			expandable: data.expandable,
-			connections: data.connections,
-			children: undefined
-		});
-	}
-
-	add_connector(parent_id, child_id) {
-		// using pure javascript for better performance
-		const parent_node = document.getElementById(`${parent_id}`);
-		const child_node = document.getElementById(`${child_id}`);
-
-		let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
-
-		// we need to connect right side of the parent to the left side of the child node
-		const pos_parent_right = {
-			x: parent_node.offsetLeft + parent_node.offsetWidth,
-			y: parent_node.offsetTop + parent_node.offsetHeight / 2
-		};
-		const pos_child_left = {
-			x: child_node.offsetLeft - 5,
-			y: child_node.offsetTop + child_node.offsetHeight / 2
-		};
-
-		const connector = this.get_connector(pos_parent_right, pos_child_left);
-
-		path.setAttribute('d', connector);
-		this.set_path_attributes(path, parent_id, child_id);
-
-		document.getElementById('connectors').appendChild(path);
-	}
-
-	get_connector(pos_parent_right, pos_child_left) {
-		if (pos_parent_right.y === pos_child_left.y) {
-			// don't add arcs if it's a straight line
-			return "M" +
-			(pos_parent_right.x) + "," + (pos_parent_right.y) + " " +
-			"L"+
-			(pos_child_left.x) + "," + (pos_child_left.y);
-		} else {
-			let arc_1 = "";
-			let arc_2 = "";
-			let offset = 0;
-
-			if (pos_parent_right.y > pos_child_left.y) {
-				// if child is above parent on Y axis 1st arc is anticlocwise
-				// second arc is clockwise
-				arc_1 = "a10,10 1 0 0 10,-10 ";
-				arc_2 = "a10,10 0 0 1 10,-10 ";
-				offset = 10;
-			} else {
-				// if child is below parent on Y axis 1st arc is clockwise
-				// second arc is anticlockwise
-				arc_1 = "a10,10 0 0 1 10,10 ";
-				arc_2 = "a10,10 1 0 0 10,10 ";
-				offset = -10;
-			}
-
-			return "M" + (pos_parent_right.x) + "," + (pos_parent_right.y) + " " +
-				"L" +
-				(pos_parent_right.x + 40) + "," + (pos_parent_right.y) + " " +
-				arc_1 +
-				"L" +
-				(pos_parent_right.x + 50) + "," + (pos_child_left.y + offset) + " " +
-				arc_2 +
-				"L"+
-				(pos_child_left.x) + "," + (pos_child_left.y);
-		}
-	}
-
-	set_path_attributes(path, parent_id, child_id) {
-		path.setAttribute("data-parent", parent_id);
-		path.setAttribute("data-child", child_id);
-		const parent = $(`[id="${parent_id}"]`);
-
-		if (parent.hasClass('active')) {
-			path.setAttribute("class", "active-connector");
-			path.setAttribute("marker-start", "url(#arrowstart-active)");
-			path.setAttribute("marker-end", "url(#arrowhead-active)");
-		} else {
-			path.setAttribute("class", "collapsed-connector");
-			path.setAttribute("marker-start", "url(#arrowstart-collapsed)");
-			path.setAttribute("marker-end", "url(#arrowhead-collapsed)");
-		}
-	}
-
-	set_selected_node(node) {
-		// remove active class from the current node
-		if (this.selected_node)
-			this.selected_node.$link.removeClass('active');
-
-		// add active class to the newly selected node
-		this.selected_node = node;
-		node.$link.addClass('active');
-	}
-
-	collapse_previous_level_nodes(node) {
-		let node_parent = $(`[id="${node.parent_id}"]`);
-		let previous_level_nodes = node_parent.parent().parent().children('li');
-		let node_card = undefined;
-
-		previous_level_nodes.each(function() {
-			node_card = $(this).find('.node-card');
-
-			if (!node_card.hasClass('active-path')) {
-				node_card.addClass('collapsed');
-			}
-		});
-	}
-
-	refresh_connectors(node_parent) {
-		if (!node_parent) return;
-
-		$(`path[data-parent="${node_parent}"]`).remove();
-
-		frappe.run_serially([
-			() => this.get_child_nodes(node_parent),
-			(child_nodes) => {
-				if (child_nodes) {
-					$.each(child_nodes, (_i, data) => {
-						this.add_connector(node_parent, data.id);
-					});
-				}
-			}
-		]);
-	}
-
-	setup_node_click_action(node) {
-		let me = this;
-		let node_element = $(`[id="${node.id}"]`);
-
-		node_element.click(function() {
-			const is_sibling = me.selected_node.parent_id === node.parent_id;
-
-			if (is_sibling) {
-				me.collapse_node();
-			} else if (node_element.is(':visible')
-				&& (node_element.hasClass('collapsed') || node_element.hasClass('active-path'))) {
-				me.remove_levels_after_node(node);
-				me.remove_orphaned_connectors();
-			}
-
-			me.expand_node(node);
-		});
-	}
-
-	setup_edit_node_action(node) {
-		let node_element = $(`[id="${node.id}"]`);
-		let me = this;
-
-		node_element.find('.btn-edit-node').click(function() {
-			frappe.set_route('Form', me.doctype, node.id);
-		});
-	}
-
-	remove_levels_after_node(node) {
-		let level = $(`[id="${node.id}"]`).parent().parent().parent().index();
-
-		level = $('.hierarchy > li:eq('+ level + ')');
-		level.nextAll('li').remove();
-
-		let nodes = level.find('.node-card');
-		let node_object = undefined;
-
-		$.each(nodes, (_i, element) => {
-			node_object = this.nodes[element.id];
-			node_object.expanded = 0;
-			node_object.$children = undefined;
-		});
-
-		nodes.removeClass('collapsed active-path');
-	}
-
-	remove_orphaned_connectors() {
-		let paths = $('#connectors > path');
-		$.each(paths, (_i, path) => {
-			const parent = $(path).data('parent');
-			const child = $(path).data('child');
-
-			if ($(`[id="${parent}"]`).length && $(`[id="${child}"]`).length)
-				return;
-
-			$(path).remove();
-		});
-	}
-};
diff --git a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js b/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
deleted file mode 100644
index 52236e7..0000000
--- a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
+++ /dev/null
@@ -1,550 +0,0 @@
-erpnext.HierarchyChartMobile = class {
-	/* Options:
-		- doctype
-		- wrapper: wrapper for the hierarchy view
-		- method:
-			- to get the data for each node
-			- this method should return id, name, title, image, and connections for each node
-	*/
-	constructor(doctype, wrapper, method) {
-		this.page = wrapper.page;
-		this.method = method;
-		this.doctype = doctype;
-
-		this.page.main.css({
-			'min-height': '300px',
-			'max-height': '600px',
-			'overflow': 'auto',
-			'position': 'relative'
-		});
-		this.page.main.addClass('frappe-card');
-
-		this.nodes = {};
-		this.setup_node_class();
-	}
-
-	setup_node_class() {
-		let me = this;
-		this.Node = class {
-			constructor({
-				id, parent, parent_id, image, name, title, expandable, connections, is_root // eslint-disable-line
-			}) {
-				// to setup values passed via constructor
-				$.extend(this, arguments[0]);
-
-				this.expanded = 0;
-
-				me.nodes[this.id] = this;
-				me.make_node_element(this);
-				me.setup_node_click_action(this);
-				me.setup_edit_node_action(this);
-			}
-		};
-	}
-
-	make_node_element(node) {
-		let node_card = frappe.render_template('node_card', {
-			id: node.id,
-			name: node.name,
-			title: node.title,
-			image: node.image,
-			parent: node.parent_id,
-			connections: node.connections,
-			is_mobile: true
-		});
-
-		node.parent.append(node_card);
-		node.$link = $(`[id="${node.id}"]`);
-		node.$link.addClass('mobile-node');
-	}
-
-	show() {
-		let me = this;
-		if ($(`[data-fieldname="company"]`).length) return;
-
-		let company = this.page.add_field({
-			fieldtype: 'Link',
-			options: 'Company',
-			fieldname: 'company',
-			placeholder: __('Select Company'),
-			default: frappe.defaults.get_default('company'),
-			only_select: true,
-			reqd: 1,
-			change: () => {
-				me.company = undefined;
-
-				if (company.get_value() && me.company != company.get_value()) {
-					me.company = company.get_value();
-
-					// svg for connectors
-					me.make_svg_markers();
-
-					if (me.$sibling_group)
-						me.$sibling_group.remove();
-
-					// setup sibling group wrapper
-					me.$sibling_group = $(`<div class="sibling-group mt-4 mb-4"></div>`);
-					me.page.main.append(me.$sibling_group);
-
-					me.setup_hierarchy();
-					me.render_root_nodes();
-				}
-			}
-		});
-
-		company.refresh();
-		$(`[data-fieldname="company"]`).trigger('change');
-	}
-
-	make_svg_markers() {
-		$('#arrows').remove();
-
-		this.page.main.prepend(`
-			<svg id="arrows" width="100%" height="100%">
-				<defs>
-					<marker id="arrowhead-active" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="6" markerHeight="6" orient="auto" fill="var(--blue-500)">
-						<path d="M 0 0 L 10 5 L 0 10 z"></path>
-					</marker>
-					<marker id="arrowhead-collapsed" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="6" markerHeight="6" orient="auto" fill="var(--blue-300)">
-						<path d="M 0 0 L 10 5 L 0 10 z"></path>
-					</marker>
-
-					<marker id="arrowstart-active" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="8" markerHeight="8" orient="auto" fill="var(--blue-500)">
-						<circle cx="4" cy="4" r="3.5" fill="white" stroke="var(--blue-500)"/>
-					</marker>
-					<marker id="arrowstart-collapsed" viewBox="0 0 10 10" refX="3" refY="5" markerWidth="8" markerHeight="8" orient="auto" fill="var(--blue-300)">
-						<circle cx="4" cy="4" r="3.5" fill="white" stroke="var(--blue-300)"/>
-					</marker>
-				</defs>
-				<g id="connectors" fill="none">
-				</g>
-			</svg>`);
-	}
-
-	setup_hierarchy() {
-		$(`#connectors`).empty();
-		if (this.$hierarchy)
-			this.$hierarchy.remove();
-
-		if (this.$sibling_group)
-			this.$sibling_group.empty();
-
-		this.$hierarchy = $(
-			`<ul class="hierarchy-mobile">
-				<li class="root-level level"></li>
-			</ul>`);
-
-		this.page.main.append(this.$hierarchy);
-	}
-
-	render_root_nodes() {
-		let me = this;
-
-		frappe.call({
-			method: me.method,
-			args: {
-				company: me.company
-			},
-		}).then(r => {
-			if (r.message.length) {
-				let root_level = me.$hierarchy.find('.root-level');
-				root_level.empty();
-
-				$.each(r.message, (_i, data) => {
-					return new me.Node({
-						id: data.id,
-						parent: root_level,
-						parent_id: undefined,
-						image: data.image,
-						name: data.name,
-						title: data.title,
-						expandable: true,
-						connections: data.connections,
-						is_root: true
-					});
-				});
-			}
-		});
-	}
-
-	expand_node(node) {
-		const is_same_node = (this.selected_node && this.selected_node.id === node.id);
-		this.set_selected_node(node);
-		this.show_active_path(node);
-
-		if (this.$sibling_group) {
-			const sibling_parent = this.$sibling_group.find('.node-group').attr('data-parent');
-			if (node.parent_id !== undefined && node.parent_id != sibling_parent)
-				this.$sibling_group.empty();
-		}
-
-		if (!is_same_node) {
-			// since the previous/parent node collapses, all connections to that node need to be rebuilt
-			// rebuild outgoing connections of parent
-			this.refresh_connectors(node.parent_id, node.id);
-
-			// rebuild incoming connections of parent
-			let grandparent = $(`[id="${node.parent_id}"]`).attr('data-parent');
-			this.refresh_connectors(grandparent, node.parent_id);
-		}
-
-		if (node.expandable && !node.expanded) {
-			return this.load_children(node);
-		}
-	}
-
-	collapse_node() {
-		let node = this.selected_node;
-		if (node.expandable && node.$children) {
-			node.$children.hide();
-			node.expanded = 0;
-
-			// add a collapsed level to show the collapsed parent
-			// and a button beside it to move to that level
-			let node_parent = node.$link.parent();
-			node_parent.prepend(
-				`<div class="collapsed-level d-flex flex-row"></div>`
-			);
-
-			node_parent
-				.find('.collapsed-level')
-				.append(node.$link);
-
-			frappe.run_serially([
-				() => this.get_child_nodes(node.parent_id, node.id),
-				(child_nodes) => this.get_node_group(child_nodes, node.parent_id),
-				(node_group) => node_parent.find('.collapsed-level').append(node_group),
-				() => this.setup_node_group_action()
-			]);
-		}
-	}
-
-	show_active_path(node) {
-		// mark node parent on active path
-		$(`[id="${node.parent_id}"]`).addClass('active-path');
-	}
-
-	load_children(node) {
-		frappe.run_serially([
-			() => this.get_child_nodes(node.id),
-			(child_nodes) => this.render_child_nodes(node, child_nodes)
-		]);
-	}
-
-	get_child_nodes(node_id, exclude_node=null) {
-		let me = this;
-		return new Promise(resolve => {
-			frappe.call({
-				method: me.method,
-				args: {
-					parent: node_id,
-					company: me.company,
-					exclude_node: exclude_node
-				}
-			}).then(r => resolve(r.message));
-		});
-	}
-
-	render_child_nodes(node, child_nodes) {
-		if (!node.$children) {
-			node.$children = $('<ul class="node-children"></ul>')
-				.hide()
-				.appendTo(node.$link.parent());
-
-			node.$children.empty();
-
-			if (child_nodes) {
-				$.each(child_nodes, (_i, data) => {
-					this.add_node(node, data);
-					$(`[id="${data.id}"]`).addClass('active-child');
-
-					setTimeout(() => {
-						this.add_connector(node.id, data.id);
-					}, 250);
-				});
-			}
-		}
-
-		node.$children.show();
-		node.expanded = 1;
-	}
-
-	add_node(node, data) {
-		var $li = $('<li class="child-node"></li>');
-
-		return new this.Node({
-			id: data.id,
-			parent: $li.appendTo(node.$children),
-			parent_id: node.id,
-			image: data.image,
-			name: data.name,
-			title: data.title,
-			expandable: data.expandable,
-			connections: data.connections,
-			children: undefined
-		});
-	}
-
-	add_connector(parent_id, child_id) {
-		const parent_node = document.getElementById(`${parent_id}`);
-		const child_node = document.getElementById(`${child_id}`);
-
-		const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
-
-		let connector = undefined;
-
-		if ($(`[id="${parent_id}"]`).hasClass('active')) {
-			connector = this.get_connector_for_active_node(parent_node, child_node);
-		} else if ($(`[id="${parent_id}"]`).hasClass('active-path')) {
-			connector = this.get_connector_for_collapsed_node(parent_node, child_node);
-		}
-
-		path.setAttribute('d', connector);
-		this.set_path_attributes(path, parent_id, child_id);
-
-		document.getElementById('connectors').appendChild(path);
-	}
-
-	get_connector_for_active_node(parent_node, child_node) {
-		// we need to connect the bottom left of the parent to the left side of the child node
-		let pos_parent_bottom = {
-			x: parent_node.offsetLeft + 20,
-			y: parent_node.offsetTop + parent_node.offsetHeight
-		};
-		let pos_child_left = {
-			x: child_node.offsetLeft - 5,
-			y: child_node.offsetTop + child_node.offsetHeight / 2
-		};
-
-		let connector =
-			"M" +
-			(pos_parent_bottom.x) + "," + (pos_parent_bottom.y) + " " +
-			"L" +
-			(pos_parent_bottom.x) + "," + (pos_child_left.y - 10) + " " +
-			"a10,10 1 0 0 10,10 " +
-			"L" +
-			(pos_child_left.x) + "," + (pos_child_left.y);
-
-		return connector;
-	}
-
-	get_connector_for_collapsed_node(parent_node, child_node) {
-		// we need to connect the bottom left of the parent to the top left of the child node
-		let pos_parent_bottom = {
-			x: parent_node.offsetLeft + 20,
-			y: parent_node.offsetTop + parent_node.offsetHeight
-		};
-		let pos_child_top = {
-			x: child_node.offsetLeft + 20,
-			y: child_node.offsetTop
-		};
-
-		let connector =
-			"M" +
-			(pos_parent_bottom.x) + "," + (pos_parent_bottom.y) + " " +
-			"L" +
-			(pos_child_top.x) + "," + (pos_child_top.y);
-
-		return connector;
-	}
-
-	set_path_attributes(path, parent_id, child_id) {
-		path.setAttribute("data-parent", parent_id);
-		path.setAttribute("data-child", child_id);
-		const parent = $(`[id="${parent_id}"]`);
-
-		if (parent.hasClass('active')) {
-			path.setAttribute("class", "active-connector");
-			path.setAttribute("marker-start", "url(#arrowstart-active)");
-			path.setAttribute("marker-end", "url(#arrowhead-active)");
-		} else if (parent.hasClass('active-path')) {
-			path.setAttribute("class", "collapsed-connector");
-		}
-	}
-
-	set_selected_node(node) {
-		// remove .active class from the current node
-		if (this.selected_node)
-			this.selected_node.$link.removeClass('active');
-
-		// add active class to the newly selected node
-		this.selected_node = node;
-		node.$link.addClass('active');
-	}
-
-	setup_node_click_action(node) {
-		let me = this;
-		let node_element = $(`[id="${node.id}"]`);
-
-		node_element.click(function() {
-			let el = undefined;
-
-			if (node.is_root) {
-				el = $(this).detach();
-				me.$hierarchy.empty();
-				$(`#connectors`).empty();
-				me.add_node_to_hierarchy(el, node);
-			} else if (node_element.is(':visible') && node_element.hasClass('active-path')) {
-				me.remove_levels_after_node(node);
-				me.remove_orphaned_connectors();
-			} else {
-				el = $(this).detach();
-				me.add_node_to_hierarchy(el, node);
-				me.collapse_node();
-			}
-
-			me.expand_node(node);
-		});
-	}
-
-	setup_edit_node_action(node) {
-		let node_element = $(`[id="${node.id}"]`);
-		let me = this;
-
-		node_element.find('.btn-edit-node').click(function() {
-			frappe.set_route('Form', me.doctype, node.id);
-		});
-	}
-
-	setup_node_group_action() {
-		let me = this;
-
-		$('.node-group').on('click', function() {
-			let parent = $(this).attr('data-parent');
-			if (parent === 'undefined') {
-				me.setup_hierarchy();
-				me.render_root_nodes();
-			} else {
-				me.expand_sibling_group_node(parent);
-			}
-		});
-	}
-
-	add_node_to_hierarchy(node_element, node) {
-		this.$hierarchy.append(`<li class="level"></li>`);
-		node_element.removeClass('active-child active-path');
-		this.$hierarchy.find('.level:last').append(node_element);
-
-		let node_object = this.nodes[node.id];
-		node_object.expanded = 0;
-		node_object.$children = undefined;
-		this.nodes[node.id] = node_object;
-	}
-
-	get_node_group(nodes, parent, collapsed=true) {
-		let limit = 2;
-		const display_nodes = nodes.slice(0, limit);
-		const extra_nodes = nodes.slice(limit);
-
-		let html = display_nodes.map(node =>
-			this.get_avatar(node)
-		).join('');
-
-		if (extra_nodes.length === 1) {
-			let node = extra_nodes[0];
-			html += this.get_avatar(node);
-		} else if (extra_nodes.length > 1) {
-			html = `
-				${html}
-				<span class="avatar avatar-small">
-					<div class="avatar-frame standard-image avatar-extra-count"
-						title="${extra_nodes.map(node => node.name).join(', ')}">
-						+${extra_nodes.length}
-					</div>
-				</span>
-			`;
-		}
-
-		if (html) {
-			const $node_group =
-				$(`<div class="node-group card cursor-pointer" data-parent=${parent}>
-					<div class="avatar-group right overlap">
-						${html}
-					</div>
-				</div>`);
-
-			if (collapsed)
-				$node_group.addClass('collapsed');
-
-			return $node_group;
-		}
-
-		return null;
-	}
-
-	get_avatar(node) {
-		return `<span class="avatar avatar-small" title="${node.name}">
-			<span class="avatar-frame" src=${node.image} style="background-image: url(${node.image})"></span>
-		</span>`;
-	}
-
-	expand_sibling_group_node(parent) {
-		let node_object = this.nodes[parent];
-		let node = node_object.$link;
-
-		node.removeClass('active-child active-path');
-		node_object.expanded = 0;
-		node_object.$children = undefined;
-		this.nodes[node.id] = node_object;
-
-		// show parent's siblings and expand parent node
-		frappe.run_serially([
-			() => this.get_child_nodes(node_object.parent_id, node_object.id),
-			(child_nodes) => this.get_node_group(child_nodes, node_object.parent_id, false),
-			(node_group) => {
-				if (node_group)
-					this.$sibling_group.empty().append(node_group);
-			},
-			() => this.setup_node_group_action(),
-			() => this.reattach_and_expand_node(node, node_object)
-		]);
-	}
-
-	reattach_and_expand_node(node, node_object) {
-		var el = node.detach();
-
-		this.$hierarchy.empty().append(`
-			<li class="level"></li>
-		`);
-		this.$hierarchy.find('.level').append(el);
-		$(`#connectors`).empty();
-		this.expand_node(node_object);
-	}
-
-	remove_levels_after_node(node) {
-		let level = $(`[id="${node.id}"]`).parent().parent().index();
-
-		level = $('.hierarchy-mobile > li:eq('+ level + ')');
-		level.nextAll('li').remove();
-
-		let node_object = this.nodes[node.id];
-		let current_node = level.find(`[id="${node.id}"]`).detach();
-
-		current_node.removeClass('active-child active-path');
-
-		node_object.expanded = 0;
-		node_object.$children = undefined;
-
-		level.empty().append(current_node);
-	}
-
-	remove_orphaned_connectors() {
-		let paths = $('#connectors > path');
-		$.each(paths, (_i, path) => {
-			const parent = $(path).data('parent');
-			const child = $(path).data('child');
-
-			if ($(`[id="${parent}"]`).length && $(`[id="${child}"]`).length)
-				return;
-
-			$(path).remove();
-		});
-	}
-
-	refresh_connectors(node_parent, node_id) {
-		if (!node_parent) return;
-
-		$(`path[data-parent="${node_parent}"]`).remove();
-		this.add_connector(node_parent, node_id);
-	}
-};
diff --git a/erpnext/public/js/telephony.js b/erpnext/public/js/telephony.js
index 1c3e314..f4b0b18 100644
--- a/erpnext/public/js/telephony.js
+++ b/erpnext/public/js/telephony.js
@@ -8,7 +8,7 @@
 			Object.values(this.frm.fields_dict).forEach(function(field) {
 				if (field.df.read_only === 1 && field.df.options === 'Phone'
 					&& field.disp_area.style[0] != 'display' && !field.has_icon) {
-					field.setup_phone();
+					field.setup_phone && field.setup_phone();
 					field.has_icon = true;
 				}
 			});
diff --git a/erpnext/public/js/templates/node_card.html b/erpnext/public/js/templates/node_card.html
deleted file mode 100644
index 4cb6ee0..0000000
--- a/erpnext/public/js/templates/node_card.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<div class="node-card card cursor-pointer" id="{%= id %}" data-parent="{%= parent %}">
-	<div class="node-meta d-flex flex-row">
-		<div class="mr-3">
-			<span class="avatar node-image" title="{{ name }}">
-				<span class="avatar-frame" src={{image}} style="background-image: url(\'{%= image %}\')"></span>
-			</span>
-		</div>
-		<div>
-			<div class="node-name d-flex flex-row mb-1">
-				<span class="ellipsis">{{ name }}</span>
-				<div class="btn-xs btn-edit-node d-flex flex-row">
-					<a class="node-edit-icon">{{ frappe.utils.icon("edit", "xs") }}</a>
-					<span class="edit-chart-node text-xs">{{ __("Edit") }}</span>
-				</div>
-			</div>
-			<div class="node-info d-flex flex-row mb-1">
-				<div class="node-title text-muted ellipsis">{{ title }}</div>
-
-				{% if is_mobile %}
-					<div class="node-connections text-muted ml-2 ellipsis">
-						· {{ connections }} <span class="fa fa-level-down"></span>
-					</div>
-				{% else %}
-					{% if connections == 1 %}
-						<div class="node-connections text-muted ml-2 ellipsis">· {{ connections }} Connection</div>
-					{% else %}
-						<div class="node-connections text-muted ml-2 ellipsis">· {{ connections }} Connections</div>
-					{% endif %}
-				{% endif %}
-			</div>
-		</div>
-	</div>
-</div>
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 58aa8d7..a859a67 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -350,6 +350,38 @@
 		}
 
 	},
+
+	pick_serial_and_batch_bundle(frm, cdt, cdn, type_of_transaction, warehouse_field) {
+		let item_row = frappe.get_doc(cdt, cdn);
+		item_row.type_of_transaction = type_of_transaction;
+
+		frappe.db.get_value("Item", item_row.item_code, ["has_batch_no", "has_serial_no"])
+			.then((r) => {
+				item_row.has_batch_no = r.message.has_batch_no;
+				item_row.has_serial_no = r.message.has_serial_no;
+
+				frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() {
+					new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
+						if (r) {
+							let update_values = {
+								"serial_and_batch_bundle": r.name,
+								"qty": Math.abs(r.total_qty)
+							}
+
+							if (!warehouse_field) {
+								warehouse_field = "warehouse";
+							}
+
+							if (r.warehouse) {
+								update_values[warehouse_field] = r.warehouse;
+							}
+
+							frappe.model.set_value(item_row.doctype, item_row.name, update_values);
+						}
+					});
+				});
+		});
+	}
 });
 
 erpnext.utils.select_alternate_items = function(opts) {
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 644adff..5c41aa0 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -16,8 +16,8 @@
 			|| (frm.doc.party_name && in_list(['Quotation', 'Opportunity'], frm.doc.doctype))) {
 
 			let party_type = "Customer";
-			if (frm.doc.quotation_to && frm.doc.quotation_to === "Lead") {
-				party_type = "Lead";
+			if (frm.doc.quotation_to && in_list(["Lead", "Prospect"], frm.doc.quotation_to)) {
+				party_type = frm.doc.quotation_to;
 			}
 
 			args = {
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index f9eec2a..27a7968 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -26,7 +26,7 @@
 			title: this.item?.title || primary_label,
 			fields: this.get_dialog_fields(),
 			primary_action_label: primary_label,
-			primary_action: () => this.update_ledgers(),
+			primary_action: () => this.update_bundle_entries(),
 			secondary_action_label: __('Edit Full Form'),
 			secondary_action: () => this.edit_full_form(),
 		});
@@ -36,7 +36,7 @@
 	}
 
 	get_serial_no_filters() {
-		let warehouse = this.item?.outward ?
+		let warehouse = this.item?.type_of_transaction === "Outward" ?
 			(this.item.warehouse || this.item.s_warehouse) : "";
 
 		return {
@@ -121,7 +121,7 @@
 			});
 		}
 
-		if (this.item?.outward) {
+		if (this.item?.type_of_transaction === "Outward") {
 			fields = [...this.get_filter_fields(), ...fields];
 		} else {
 			fields = [...fields, ...this.get_attach_field()];
@@ -267,7 +267,7 @@
 					label: __('Batch No'),
 					in_list_view: 1,
 					get_query: () => {
-						if (!this.item.outward) {
+						if (this.item.type_of_transaction !== "Outward") {
 							return {
 								filters: {
 									'item': this.item.item_code,
@@ -356,7 +356,7 @@
 		this.dialog.fields_dict.entries.grid.refresh();
 	}
 
-	update_ledgers() {
+	update_bundle_entries() {
 		let entries = this.dialog.get_values().entries;
 		let warehouse = this.dialog.get_value('warehouse');
 
@@ -390,7 +390,7 @@
 			_new.warehouse = this.get_warehouse();
 			_new.has_serial_no = this.item.has_serial_no;
 			_new.has_batch_no = this.item.has_batch_no;
-			_new.type_of_transaction = this.get_type_of_transaction();
+			_new.type_of_transaction = this.item.type_of_transaction;
 			_new.company = this.frm.doc.company;
 			_new.voucher_type = this.frm.doc.doctype;
 			bundle_id = _new.name;
@@ -401,15 +401,11 @@
 	}
 
 	get_warehouse() {
-		return (this.item?.outward ?
+		return (this.item?.type_of_transaction === "Outward" ?
 			(this.item.warehouse || this.item.s_warehouse)
 			: (this.item.warehouse || this.item.t_warehouse));
 	}
 
-	get_type_of_transaction() {
-		return (this.item?.outward ? 'Outward' : 'Inward');
-	}
-
 	render_data() {
 		if (!this.frm.is_new() && this.bundle) {
 			frappe.call({
diff --git a/erpnext/public/scss/erpnext.bundle.scss b/erpnext/public/scss/erpnext.bundle.scss
index b68ddf5..d3313c7 100644
--- a/erpnext/public/scss/erpnext.bundle.scss
+++ b/erpnext/public/scss/erpnext.bundle.scss
@@ -1,4 +1,3 @@
 @import "./erpnext";
 @import "./call_popup";
 @import "./point-of-sale";
-@import "./hierarchy_chart";
diff --git a/erpnext/public/scss/hierarchy_chart.scss b/erpnext/public/scss/hierarchy_chart.scss
deleted file mode 100644
index 57d5e84..0000000
--- a/erpnext/public/scss/hierarchy_chart.scss
+++ /dev/null
@@ -1,313 +0,0 @@
-.node-card {
-	background: white;
-	stroke: 1px solid var(--gray-200);
-	box-shadow: var(--shadow-base);
-	border-radius: 0.5rem;
-	padding: 0.75rem;
-	margin-left: 3rem;
-	width: 18rem;
-	overflow: hidden;
-
-	.btn-edit-node {
-		display: none;
-	}
-
-	.edit-chart-node {
-		display: none;
-	}
-
-	.node-edit-icon {
-		display: none;
-	}
-}
-
-.node-card.exported {
-	box-shadow: none
-}
-
-.node-image {
-	width: 3.0rem;
-	height: 3.0rem;
-}
-
-.node-name {
-	font-size: 1rem;
-	line-height: 1.72;
-}
-
-.node-title {
-	font-size: 0.75rem;
-	line-height: 1.35;
-}
-
-.node-info {
-	width: 12.7rem;
-}
-
-.node-connections {
-	font-size: 0.75rem;
-	line-height: 1.35;
-}
-
-.node-card.active {
-	background: var(--blue-50);
-	border: 1px solid var(--blue-500);
-	box-shadow: var(--shadow-md);
-	border-radius: 0.5rem;
-	padding: 0.75rem;
-	width: 18rem;
-
-	.btn-edit-node {
-		display: flex;
-		background: var(--blue-100);
-		color: var(--blue-500);
-		padding: .25rem .5rem;
-		font-size: .75rem;
-		justify-content: center;
-		box-shadow: var(--shadow-sm);
-		margin-left: auto;
-	}
-
-	.edit-chart-node {
-		display: block;
-		margin-right: 0.25rem;
-	}
-
-	.node-edit-icon {
-		display: block;
-	}
-
-	.node-edit-icon > .icon{
-		stroke: var(--blue-500);
-	}
-
-	.node-name {
-		align-items: center;
-		justify-content: space-between;
-		margin-bottom: 2px;
-		width: 12.2rem;
-	}
-}
-
-.node-card.active-path {
-	background: var(--blue-100);
-	border: 1px solid var(--blue-300);
-	box-shadow: var(--shadow-sm);
-	border-radius: 0.5rem;
-	padding: 0.75rem;
-	width: 15rem;
-	height: 3.0rem;
-
-	.btn-edit-node {
-		display: none !important;
-	}
-
-	.edit-chart-node {
-		display: none;
-	}
-
-	.node-edit-icon {
-		display: none;
-	}
-
-	.node-info {
-		display: none;
-	}
-
-	.node-title {
-		display: none;
-	}
-
-	.node-connections {
-		display: none;
-	}
-
-	.node-name {
-		font-size: 0.85rem;
-		line-height: 1.35;
-	}
-
-	.node-image {
-		width: 1.5rem;
-		height: 1.5rem;
-	}
-
-	.node-meta {
-		align-items: baseline;
-	}
-}
-
-.node-card.collapsed {
-	background: white;
-	stroke: 1px solid var(--gray-200);
-	box-shadow: var(--shadow-sm);
-	border-radius: 0.5rem;
-	padding: 0.75rem;
-	width: 15rem;
-	height: 3.0rem;
-
-	.btn-edit-node {
-		display: none !important;
-	}
-
-	.edit-chart-node {
-		display: none;
-	}
-
-	.node-edit-icon {
-		display: none;
-	}
-
-	.node-info {
-		display: none;
-	}
-
-	.node-title {
-		display: none;
-	}
-
-	.node-connections {
-		display: none;
-	}
-
-	.node-name {
-		font-size: 0.85rem;
-		line-height: 1.35;
-	}
-
-	.node-image {
-		width: 1.5rem;
-		height: 1.5rem;
-	}
-
-	.node-meta {
-		align-items: baseline;
-	}
-}
-
-// horizontal hierarchy tree view
-#hierarchy-chart-wrapper {
-	padding-top: 30px;
-
-	#arrows {
-		margin-top: -80px;
-	}
-}
-
-.hierarchy {
-	display: flex;
-}
-
-.hierarchy li {
-	list-style-type: none;
-}
-
-.child-node {
-	margin: 0px 0px 16px 0px;
-}
-
-.hierarchy, .hierarchy-mobile {
-	.level {
-		margin-right: 8px;
-		align-items: flex-start;
-		flex-direction: column;
-	}
-}
-
-#arrows {
-	position: absolute;
-	overflow: visible;
-}
-
-.active-connector {
-	stroke: var(--blue-500);
-}
-
-.collapsed-connector {
-	stroke: var(--blue-300);
-}
-
-// mobile
-
-.hierarchy-mobile {
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-	padding-top: 10px;
-	padding-left: 0px;
-}
-
-.hierarchy-mobile li {
-	list-style-type: none;
-	display: flex;
-	flex-direction: column;
-	align-items: flex-end;
-}
-
-.mobile-node {
-	margin-left: 0;
-}
-
-.mobile-node.active-path {
-	width: 12.25rem;
-}
-
-.active-child {
-	width: 15.5rem;
-}
-
-.mobile-node .node-connections {
-	max-width: 80px;
-}
-
-.hierarchy-mobile .node-children {
-	margin-top: 16px;
-}
-
-.root-level .node-card {
-	margin: 0 0 16px;
-}
-
-// node group
-
-.collapsed-level {
-	margin-bottom: 16px;
-	width: 18rem;
-}
-
-.node-group {
-	background: white;
-	border: 1px solid var(--gray-300);
-	box-shadow: var(--shadow-sm);
-	border-radius: 0.5rem;
-	padding: 0.75rem;
-	width: 18rem;
-	height: 3rem;
-	overflow: hidden;
-	align-items: center;
-}
-
-.node-group .avatar-group {
-	margin-left: 0px;
-}
-
-.node-group .avatar-extra-count {
-	background-color: var(--blue-100);
-	color: var(--blue-500);
-}
-
-.node-group .avatar-frame {
-	width: 1.5rem;
-	height: 1.5rem;
-}
-
-.node-group.collapsed {
-	width: 5rem;
-	margin-left: 12px;
-}
-
-.sibling-group {
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-}
diff --git a/erpnext/regional/report/irs_1099/irs_1099.py b/erpnext/regional/report/irs_1099/irs_1099.py
index 66ade1f..c5d8112 100644
--- a/erpnext/regional/report/irs_1099/irs_1099.py
+++ b/erpnext/regional/report/irs_1099/irs_1099.py
@@ -10,7 +10,7 @@
 from frappe.utils.jinja import render_template
 from frappe.utils.pdf import get_pdf
 from frappe.utils.print_format import read_multi_pdf
-from PyPDF2 import PdfWriter
+from pypdf import PdfWriter
 
 from erpnext.accounts.utils import get_fiscal_year
 
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index c133cd3..72a1594 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -568,7 +568,7 @@
    "link_fieldname": "party"
   }
  ],
- "modified": "2023-02-18 11:04:46.343527",
+ "modified": "2023-05-09 15:38:40.255193",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Customer",
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index f15ac12..6367e3c 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -454,12 +454,12 @@
 		customer_outstanding += flt(extra_amount)
 
 	if credit_limit > 0 and flt(customer_outstanding) > credit_limit:
-		msgprint(
-			_("Credit limit has been crossed for customer {0} ({1}/{2})").format(
-				customer, customer_outstanding, credit_limit
-			)
+		message = _("Credit limit has been crossed for customer {0} ({1}/{2})").format(
+			customer, customer_outstanding, credit_limit
 		)
 
+		message += "<br><br>"
+
 		# If not authorized person raise exception
 		credit_controller_role = frappe.db.get_single_value("Accounts Settings", "credit_controller")
 		if not credit_controller_role or credit_controller_role not in frappe.get_roles():
@@ -480,7 +480,7 @@
 				"<li>".join(credit_controller_users_formatted)
 			)
 
-			message = _(
+			message += _(
 				"Please contact any of the following users to extend the credit limits for {0}: {1}"
 			).format(customer, user_list)
 
@@ -488,7 +488,7 @@
 			# prompt them to send out an email to the controller users
 			frappe.msgprint(
 				message,
-				title="Notify",
+				title=_("Credit Limit Crossed"),
 				raise_exception=1,
 				primary_action={
 					"label": "Send Email",
@@ -519,7 +519,6 @@
 	customer, company, ignore_outstanding_sales_order=False, cost_center=None
 ):
 	# Outstanding based on GL Entries
-
 	cond = ""
 	if cost_center:
 		lft, rgt = frappe.get_cached_value("Cost Center", cost_center, ["lft", "rgt"])
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index a621c73..6e737e4 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -345,7 +345,7 @@
 	def test_serach_fields_for_customer(self):
 		from erpnext.controllers.queries import customer_query
 
-		frappe.db.set_value("Selling Settings", None, "cust_master_name", "Naming Series")
+		frappe.db.set_single_value("Selling Settings", "cust_master_name", "Naming Series")
 
 		make_property_setter(
 			"Customer", None, "search_fields", "customer_group", "Data", for_doctype="Doctype"
@@ -371,7 +371,7 @@
 		self.assertEqual(data[0].territory, "_Test Territory")
 		self.assertTrue("territory" in data[0])
 
-		frappe.db.set_value("Selling Settings", None, "cust_master_name", "Customer Name")
+		frappe.db.set_single_value("Selling Settings", "cust_master_name", "Customer Name")
 
 
 def get_customer_dict(customer_name):
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index 27a3b35..dd6f8a8 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -7,6 +7,27 @@
 		frm.set_query('customer_address', erpnext.queries.address_query);
 		frm.set_query('contact_person', erpnext.queries.contact_query);
 		frm.set_query('customer', erpnext.queries.customer);
+		frm.set_query("serial_and_batch_bundle", "items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
 	},
 	onload: function(frm) {
 		if(!frm.doc.status) {
diff --git a/erpnext/selling/doctype/installation_note/installation_note.json b/erpnext/selling/doctype/installation_note/installation_note.json
index 765bc5c..18c7d08 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.json
+++ b/erpnext/selling/doctype/installation_note/installation_note.json
@@ -1,812 +1,267 @@
 {
- "allow_copy": 0, 
- "allow_guest_to_view": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "autoname": "naming_series:", 
- "beta": 0, 
- "creation": "2013-04-30 13:13:06", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 0, 
+ "actions": [],
+ "autoname": "naming_series:",
+ "creation": "2013-04-30 13:13:06",
+ "doctype": "DocType",
+ "document_type": "Document",
+ "engine": "InnoDB",
+ "field_order": [
+  "installation_note",
+  "column_break0",
+  "naming_series",
+  "customer",
+  "customer_address",
+  "contact_person",
+  "customer_name",
+  "address_display",
+  "contact_display",
+  "contact_mobile",
+  "contact_email",
+  "territory",
+  "customer_group",
+  "column_break1",
+  "inst_date",
+  "inst_time",
+  "status",
+  "company",
+  "amended_from",
+  "remarks",
+  "item_details",
+  "items"
+ ],
  "fields": [
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "installation_note", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Installation Note", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldtype": "Section Break", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "installation_note",
+   "fieldtype": "Section Break",
+   "label": "Installation Note",
+   "oldfieldtype": "Section Break"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0, 
+   "fieldname": "column_break0",
+   "fieldtype": "Column Break",
+   "oldfieldtype": "Column Break",
    "width": "50%"
-  }, 
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "", 
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Series", 
-   "length": 0, 
-   "no_copy": 1, 
-   "oldfieldname": "naming_series", 
-   "oldfieldtype": "Select", 
-   "options": "MAT-INS-.YYYY.-", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 1, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "oldfieldname": "naming_series",
+   "oldfieldtype": "Select",
+   "options": "MAT-INS-.YYYY.-",
+   "reqd": 1,
+   "set_only_once": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "customer", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Customer", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "customer", 
-   "oldfieldtype": "Link", 
-   "options": "Customer", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "customer",
+   "fieldtype": "Link",
+   "in_global_search": 1,
+   "in_standard_filter": 1,
+   "label": "Customer",
+   "oldfieldname": "customer",
+   "oldfieldtype": "Link",
+   "options": "Customer",
+   "print_hide": 1,
+   "reqd": 1,
+   "search_index": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "fieldname": "customer_address", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer Address", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Address", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "customer_address",
+   "fieldtype": "Link",
+   "label": "Customer Address",
+   "options": "Address",
+   "print_hide": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "fieldname": "contact_person", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Contact Person", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Contact", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "contact_person",
+   "fieldtype": "Link",
+   "label": "Contact Person",
+   "options": "Contact",
+   "print_hide": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 1, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Name", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "customer_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "bold": 1,
+   "fieldname": "customer_name",
+   "fieldtype": "Data",
+   "label": "Name",
+   "oldfieldname": "customer_name",
+   "oldfieldtype": "Data",
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "address_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Address", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "address_display",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "label": "Address",
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "contact_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Contact", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "contact_display",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "in_global_search": 1,
+   "label": "Contact",
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "fieldname": "contact_mobile", 
-   "fieldtype": "Small Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 1, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Mobile No", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "contact_mobile",
+   "fieldtype": "Small Text",
+   "in_global_search": 1,
+   "label": "Mobile No",
+   "options": "Phone",
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "fieldname": "contact_email", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Contact Email", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Email", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "contact_email",
+   "fieldtype": "Data",
+   "label": "Contact Email",
+   "options": "Email",
+   "print_hide": 1,
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "description": "", 
-   "fieldname": "territory", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Territory", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Territory", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "territory",
+   "fieldtype": "Link",
+   "label": "Territory",
+   "options": "Territory",
+   "print_hide": 1,
+   "reqd": 1,
+   "search_index": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "depends_on": "customer", 
-   "description": "", 
-   "fieldname": "customer_group", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Customer Group", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Customer Group", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "depends_on": "customer",
+   "fieldname": "customer_group",
+   "fieldtype": "Link",
+   "label": "Customer Group",
+   "options": "Customer Group",
+   "print_hide": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0, 
+   "fieldname": "column_break1",
+   "fieldtype": "Column Break",
+   "oldfieldtype": "Column Break",
    "width": "50%"
-  }, 
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "inst_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Installation Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "inst_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "inst_date",
+   "fieldtype": "Date",
+   "label": "Installation Date",
+   "oldfieldname": "inst_date",
+   "oldfieldtype": "Date",
+   "reqd": 1,
+   "search_index": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "inst_time", 
-   "fieldtype": "Time", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Installation Time", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "inst_time", 
-   "oldfieldtype": "Time", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "inst_time",
+   "fieldtype": "Time",
+   "label": "Installation Time",
+   "oldfieldname": "inst_time",
+   "oldfieldtype": "Time"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "Draft", 
-   "fieldname": "status", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Status", 
-   "length": 0, 
-   "no_copy": 1, 
-   "oldfieldname": "status", 
-   "oldfieldtype": "Select", 
-   "options": "Draft\nSubmitted\nCancelled", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "default": "Draft",
+   "fieldname": "status",
+   "fieldtype": "Select",
+   "in_standard_filter": 1,
+   "label": "Status",
+   "no_copy": 1,
+   "oldfieldname": "status",
+   "oldfieldtype": "Select",
+   "options": "Draft\nSubmitted\nCancelled",
+   "print_hide": 1,
+   "read_only": 1,
+   "reqd": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "", 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 1, 
-   "label": "Company", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Select", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 1, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "in_standard_filter": 1,
+   "label": "Company",
+   "oldfieldname": "company",
+   "oldfieldtype": "Select",
+   "options": "Company",
+   "print_hide": 1,
+   "remember_last_selected_value": 1,
+   "reqd": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "amended_from", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 1, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Amended From", 
-   "length": 0, 
-   "no_copy": 1, 
-   "oldfieldname": "amended_from", 
-   "oldfieldtype": "Data", 
-   "options": "Installation Note", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "amended_from",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Amended From",
+   "no_copy": 1,
+   "oldfieldname": "amended_from",
+   "oldfieldtype": "Data",
+   "options": "Installation Note",
+   "print_hide": 1,
+   "read_only": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "remarks", 
-   "fieldtype": "Small Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 1, 
-   "in_standard_filter": 0, 
-   "label": "Remarks", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "remarks", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "remarks",
+   "fieldtype": "Small Text",
+   "in_list_view": 1,
+   "label": "Remarks",
+   "oldfieldname": "remarks",
+   "oldfieldtype": "Small Text",
+   "print_hide": 1
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "item_details", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldtype": "Section Break", 
-   "options": "Simple", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
+   "fieldname": "item_details",
+   "fieldtype": "Section Break",
+   "oldfieldtype": "Section Break",
+   "options": "Simple"
+  },
   {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "items", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Items", 
-   "length": 0, 
-   "no_copy": 0, 
-   "oldfieldname": "installed_item_details", 
-   "oldfieldtype": "Table", 
-   "options": "Installation Note Item", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
+   "fieldname": "items",
+   "fieldtype": "Table",
+   "label": "Items",
+   "oldfieldname": "installed_item_details",
+   "oldfieldtype": "Table",
+   "options": "Installation Note Item",
+   "reqd": 1
   }
- ], 
- "has_web_view": 0, 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "icon": "fa fa-wrench", 
- "idx": 1, 
- "image_view": 0, 
- "in_create": 0, 
- "is_submittable": 1, 
- "issingle": 0, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2018-08-21 14:44:28.000728", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Installation Note", 
- "owner": "Administrator", 
+ ],
+ "icon": "fa fa-wrench",
+ "idx": 1,
+ "is_submittable": 1,
+ "links": [],
+ "modified": "2023-06-03 16:31:08.386961",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Installation Note",
+ "naming_rule": "By \"Naming Series\" field",
+ "owner": "Administrator",
  "permissions": [
   {
-   "amend": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 1, 
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "share": 1,
+   "submit": 1,
    "write": 1
-  }, 
+  },
   {
-   "amend": 0, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 0, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 1, 
-   "print": 0, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "set_user_permissions": 0, 
-   "share": 0, 
-   "submit": 0, 
-   "write": 0
+   "permlevel": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User"
   }
- ], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "show_name_in_global_search": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "timeline_field": "customer", 
- "title_field": "customer_name", 
- "track_changes": 0, 
- "track_seen": 0, 
- "track_views": 0
+ ],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": [],
+ "timeline_field": "customer",
+ "title_field": "customer_name"
 }
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 83fa472..67c392c 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -13,7 +13,7 @@
 		frm.set_query("quotation_to", function() {
 			return{
 				"filters": {
-					"name": ["in", ["Customer", "Lead"]],
+					"name": ["in", ["Customer", "Lead", "Prospect"]],
 				}
 			}
 		});
@@ -34,6 +34,29 @@
 				}
 			};
 		});
+
+		frm.set_query("serial_and_batch_bundle", "packed_items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('packed_items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'warehouse': row.doc.warehouse,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
 	},
 
 	refresh: function(frm) {
@@ -160,19 +183,16 @@
 	}
 
 	set_dynamic_field_label(){
-		if (this.frm.doc.quotation_to == "Customer")
-		{
+		if (this.frm.doc.quotation_to == "Customer") {
 			this.frm.set_df_property("party_name", "label", "Customer");
 			this.frm.fields_dict.party_name.get_query = null;
-		}
-
-		if (this.frm.doc.quotation_to == "Lead")
-		{
+		} else if (this.frm.doc.quotation_to == "Lead") {
 			this.frm.set_df_property("party_name", "label", "Lead");
-
 			this.frm.fields_dict.party_name.get_query = function() {
 				return{	query: "erpnext.controllers.queries.lead_query" }
 			}
+		} else if (this.frm.doc.quotation_to == "Prospect") {
+			this.frm.set_df_property("party_name", "label", "Prospect");
 		}
 	}
 
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 2ffa6a5..8c816cf 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -291,6 +291,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1072,7 +1073,7 @@
  "idx": 82,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-14 16:50:44.550098",
+ "modified": "2023-06-03 16:21:04.980033",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Quotation",
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 61969fe..8ff681b 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -299,6 +299,7 @@
 			)
 
 		target.flags.ignore_permissions = ignore_permissions
+		target.delivery_date = nowdate()
 		target.run_method("set_missing_values")
 		target.run_method("calculate_taxes_and_totals")
 
@@ -306,6 +307,7 @@
 		balance_qty = obj.qty - ordered_items.get(obj.item_code, 0.0)
 		target.qty = balance_qty if balance_qty > 0 else 0
 		target.stock_qty = flt(target.qty) * flt(obj.conversion_factor)
+		target.delivery_date = nowdate()
 
 		if obj.against_blanket_order:
 			target.against_blanket_order = obj.against_blanket_order
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index 67f6518..5623a12 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -60,9 +60,9 @@
 		sales_order = make_sales_order(quotation.name)
 		sales_order.currency = "USD"
 		sales_order.conversion_rate = 20.0
-		sales_order.delivery_date = "2019-01-01"
 		sales_order.naming_series = "_T-Quotation-"
 		sales_order.transaction_date = nowdate()
+		sales_order.delivery_date = nowdate()
 		sales_order.insert()
 
 		self.assertEqual(sales_order.currency, "USD")
@@ -644,8 +644,6 @@
 			},
 		)
 
-	qo.delivery_date = add_days(qo.transaction_date, 10)
-
 	if not args.do_not_save:
 		qo.insert()
 		if not args.do_not_submit:
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index f7143d7..f65969e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -398,6 +398,7 @@
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1475,6 +1476,7 @@
    "hide_days": 1,
    "hide_seconds": 1,
    "label": "Phone",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1643,7 +1645,7 @@
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-22 09:55:37.008190",
+ "modified": "2023-06-03 16:16:23.411247",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index d3c2347..624dadb 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -171,7 +171,8 @@
 						frappe.msgprint(
 							_("Expected Delivery Date should be after Sales Order Date"),
 							indicator="orange",
-							title=_("Warning"),
+							title=_("Invalid Delivery Date"),
+							raise_exception=True,
 						)
 			else:
 				frappe.throw(_("Please enter Delivery Date"))
@@ -230,6 +231,7 @@
 					frappe.throw(_("Quotation {0} is cancelled").format(quotation))
 
 				doc.set_status(update=True)
+				doc.update_opportunity("Converted" if flag == "submit" else "Quotation")
 
 	def validate_drop_ship(self):
 		for d in self.get("items"):
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index e58bc73..45100d7 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -43,11 +43,8 @@
 	@classmethod
 	def tearDownClass(cls) -> None:
 		# reset config to previous state
-		frappe.db.set_value(
-			"Accounts Settings",
-			"Accounts Settings",
-			"unlink_advance_payment_on_cancelation_of_order",
-			cls.unlink_setting,
+		frappe.db.set_single_value(
+			"Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", cls.unlink_setting
 		)
 		super().tearDownClass()
 
@@ -705,7 +702,7 @@
 		self.assertEqual(so.taxes[0].total, 110)
 
 		old_stock_settings_value = frappe.db.get_single_value("Stock Settings", "default_warehouse")
-		frappe.db.set_value("Stock Settings", None, "default_warehouse", "_Test Warehouse - _TC")
+		frappe.db.set_single_value("Stock Settings", "default_warehouse", "_Test Warehouse - _TC")
 
 		items = json.dumps(
 			[
@@ -741,7 +738,7 @@
 		so.delete()
 		new_item_with_tax.delete()
 		frappe.get_doc("Item Tax Template", "Test Update Items Template - _TC").delete()
-		frappe.db.set_value("Stock Settings", None, "default_warehouse", old_stock_settings_value)
+		frappe.db.set_single_value("Stock Settings", "default_warehouse", old_stock_settings_value)
 
 	def test_warehouse_user(self):
 		test_user = create_user("test_so_warehouse_user@example.com", "Sales User", "Stock User")
@@ -820,7 +817,7 @@
 	def test_auto_insert_price(self):
 		make_item("_Test Item for Auto Price List", {"is_stock_item": 0})
 		make_item("_Test Item for Auto Price List with Discount Percentage", {"is_stock_item": 0})
-		frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 1)
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
 
 		item_price = frappe.db.get_value(
 			"Item Price", {"price_list": "_Test Price List", "item_code": "_Test Item for Auto Price List"}
@@ -861,7 +858,7 @@
 		)
 
 		# do not update price list
-		frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 0)
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0)
 
 		item_price = frappe.db.get_value(
 			"Item Price", {"price_list": "_Test Price List", "item_code": "_Test Item for Auto Price List"}
@@ -882,7 +879,7 @@
 			None,
 		)
 
-		frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 1)
+		frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
 
 	def test_drop_shipping(self):
 		from erpnext.buying.doctype.purchase_order.purchase_order import update_status
@@ -1257,8 +1254,8 @@
 	def test_advance_payment_entry_unlink_against_sales_order(self):
 		from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
 
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
+		frappe.db.set_single_value(
+			"Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
 		)
 
 		so = make_sales_order()
@@ -1312,8 +1309,8 @@
 		so = make_sales_order()
 
 		# disable unlinking of payment entry
-		frappe.db.set_value(
-			"Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
+		frappe.db.set_single_value(
+			"Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0
 		)
 
 		# create a payment entry against sales order
@@ -1772,7 +1769,14 @@
 		self.assertEqual(pe.references[1].reference_name, so.name)
 		self.assertEqual(pe.references[1].allocated_amount, 300)
 
-	@change_settings("Stock Settings", {"enable_stock_reservation": 1})
+	@change_settings(
+		"Stock Settings",
+		{
+			"enable_stock_reservation": 1,
+			"auto_create_serial_and_batch_bundle_for_outward": 1,
+			"pick_serial_and_batch_based_on": "FIFO",
+		},
+	)
 	def test_stock_reservation_against_sales_order(self) -> None:
 		from random import randint, uniform
 
@@ -2073,7 +2077,7 @@
 
 
 def create_dn_against_so(so, delivered_qty=0):
-	frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+	frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 	dn = make_delivery_note(so)
 	dn.get("items")[0].qty = delivered_qty or 5
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index 62b3105..fd23381 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -65,7 +65,7 @@
 			"item_code": item_code,
 			"batch_no": batch_no,
 		},
-		fields=["uom", "stock_uom", "currency", "price_list_rate", "batch_no"],
+		fields=["uom", "currency", "price_list_rate", "batch_no"],
 	)
 
 	def __sort(p):
diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js
index e6b2b3b..b6e567c 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_details.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_details.js
@@ -379,7 +379,6 @@
 			frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", () => {
 				let frm = this.events.get_frm();
 				let item_row = this.item_row;
-				item_row.outward = 1;
 				item_row.type_of_transaction = "Outward";
 
 				new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 98ad8a7..87c0fae 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -317,7 +317,6 @@
 					item.has_serial_no = r.message.has_serial_no;
 					item.has_batch_no = r.message.has_batch_no;
 					item.type_of_transaction = item.qty > 0 ? "Outward":"Inward";
-					item.outward = item.qty > 0 ? 1 : 0;
 
 					item.title = item.has_serial_no ?
 						__("Select Serial No") : __("Select Batch No");
diff --git a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
index e3d281a..3b48c2b 100644
--- a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
+++ b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
@@ -87,13 +87,13 @@
 			cache.delete(key)
 
 	def tearDown(self):
-		frappe.db.set_value("Accounts Settings", None, "allow_stale", 1)
+		frappe.db.set_single_value("Accounts Settings", "allow_stale", 1)
 		self.clear_cache()
 
 	def test_exchange_rate(self, mock_get):
 		save_new_records(test_records)
 
-		frappe.db.set_value("Accounts Settings", None, "allow_stale", 1)
+		frappe.db.set_single_value("Accounts Settings", "allow_stale", 1)
 
 		# Start with allow_stale is True
 		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01", "for_buying")
@@ -124,7 +124,7 @@
 		settings.save()
 
 		# Update exchange
-		frappe.db.set_value("Accounts Settings", None, "allow_stale", 1)
+		frappe.db.set_single_value("Accounts Settings", "allow_stale", 1)
 
 		# Start with allow_stale is True
 		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01", "for_buying")
@@ -152,8 +152,8 @@
 
 	def test_exchange_rate_strict(self, mock_get):
 		# strict currency settings
-		frappe.db.set_value("Accounts Settings", None, "allow_stale", 0)
-		frappe.db.set_value("Accounts Settings", None, "stale_days", 1)
+		frappe.db.set_single_value("Accounts Settings", "allow_stale", 0)
+		frappe.db.set_single_value("Accounts Settings", "stale_days", 1)
 
 		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01", "for_buying")
 		self.assertEqual(exchange_rate, 60.0)
@@ -175,8 +175,8 @@
 		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
 		self.assertEqual(exchange_rate, 65.1)
 
-		frappe.db.set_value("Accounts Settings", None, "allow_stale", 0)
-		frappe.db.set_value("Accounts Settings", None, "stale_days", 1)
+		frappe.db.set_single_value("Accounts Settings", "allow_stale", 0)
+		frappe.db.set_single_value("Accounts Settings", "stale_days", 1)
 
 		self.clear_cache()
 		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30", "for_buying")
diff --git a/erpnext/setup/doctype/employee/employee.json b/erpnext/setup/doctype/employee/employee.json
index 99693d9..6cb4292 100644
--- a/erpnext/setup/doctype/employee/employee.json
+++ b/erpnext/setup/doctype/employee/employee.json
@@ -78,7 +78,9 @@
   "salary_mode",
   "bank_details_section",
   "bank_name",
+  "column_break_heye",
   "bank_ac_no",
+  "iban",
   "personal_details",
   "marital_status",
   "family_background",
@@ -804,17 +806,26 @@
   {
    "fieldname": "column_break_104",
    "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "column_break_heye",
+   "fieldtype": "Column Break"
+  },
+  {
+   "depends_on": "eval:doc.salary_mode == 'Bank'",
+   "fieldname": "iban",
+   "fieldtype": "Data",
+   "label": "IBAN"
   }
  ],
  "icon": "fa fa-user",
  "idx": 24,
  "image_field": "image",
  "links": [],
- "modified": "2022-09-13 10:27:14.579197",
+ "modified": "2023-03-30 15:57:05.174592",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Employee",
- "name_case": "Title Case",
  "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index cf9600e..013d945 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -2,12 +2,14 @@
 # License: GNU General Public License v3. See license.txt
 
 
+import click
 import frappe
 from frappe import _
 from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
 from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
 from frappe.utils import cint
 
+import erpnext
 from erpnext.setup.default_energy_point_rules import get_default_energy_point_rules
 from erpnext.setup.doctype.incoterm.incoterm import create_incoterms
 
@@ -25,6 +27,7 @@
 	create_default_success_action()
 	create_default_energy_point_rules()
 	create_incoterms()
+	create_default_role_profiles()
 	add_company_to_session_defaults()
 	add_standard_navbar_items()
 	add_app_name()
@@ -40,6 +43,25 @@
 		frappe.throw(message)  # nosemgrep
 
 
+def check_frappe_version():
+	def major_version(v: str) -> str:
+		return v.split(".")[0]
+
+	frappe_version = major_version(frappe.__version__)
+	erpnext_version = major_version(erpnext.__version__)
+
+	if frappe_version == erpnext_version:
+		return
+
+	click.secho(
+		f"You're attempting to install ERPNext version {erpnext_version} with Frappe version {frappe_version}. "
+		"This is not supported and will result in broken install. Switch to correct branch before installing.",
+		fg="red",
+	)
+
+	raise SystemExit(1)
+
+
 def set_single_defaults():
 	for dt in (
 		"Accounts Settings",
@@ -189,7 +211,7 @@
 
 
 def add_app_name():
-	frappe.db.set_value("System Settings", None, "app_name", "ERPNext")
+	frappe.db.set_single_value("System Settings", "app_name", "ERPNext")
 
 
 def setup_log_settings():
@@ -202,3 +224,42 @@
 def hide_workspaces():
 	for ws in ["Integration", "Settings"]:
 		frappe.db.set_value("Workspace", ws, "public", 0)
+
+
+def create_default_role_profiles():
+	for role_profile_name, roles in DEFAULT_ROLE_PROFILES.items():
+		role_profile = frappe.new_doc("Role Profile")
+		role_profile.role_profile = role_profile_name
+		for role in roles:
+			role_profile.append("roles", {"role": role})
+
+		role_profile.insert(ignore_permissions=True)
+
+
+DEFAULT_ROLE_PROFILES = {
+	"Inventory": [
+		"Stock User",
+		"Stock Manager",
+		"Item Manager",
+	],
+	"Manufacturing": [
+		"Stock User",
+		"Manufacturing User",
+		"Manufacturing Manager",
+	],
+	"Accounts": [
+		"Accounts User",
+		"Accounts Manager",
+	],
+	"Sales": [
+		"Sales User",
+		"Stock User",
+		"Sales Manager",
+	],
+	"Purchase": [
+		"Item Manager",
+		"Stock User",
+		"Purchase User",
+		"Purchase Manager",
+	],
+}
diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py
index 0237731..2f1270e 100644
--- a/erpnext/stock/deprecated_serial_batch.py
+++ b/erpnext/stock/deprecated_serial_batch.py
@@ -125,6 +125,9 @@
 			if batch_no not in self.non_batchwise_valuation_batches:
 				continue
 
+			if not self.non_batchwise_balance_qty:
+				continue
+
 			self.batch_avg_rate[batch_no] = (
 				self.non_batchwise_balance_value / self.non_batchwise_balance_qty
 			)
diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
index a796372..295d979 100644
--- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
+++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
@@ -51,7 +51,7 @@
 
 		for fieldname in ["warehouse", "item_code", "item_group", "warehouse_type"]:
 			if self.get(fieldname):
-				query = query.where(table.get(fieldname) == self.get(fieldname))
+				query = query.where(table[fieldname] == self.get(fieldname))
 
 		query = query.run(as_dict=True)
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json
index 2adf9c3..6a9e241 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.json
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.json
@@ -374,6 +374,7 @@
    "fieldtype": "Small Text",
    "hidden": 1,
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1222,7 +1223,8 @@
    "hidden": 1,
    "label": "Pick List",
    "options": "Pick List",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "default": "0",
@@ -1398,7 +1400,7 @@
  "idx": 146,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-21 11:15:23.931084",
+ "modified": "2023-06-16 14:58:55.066602",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Delivery Note",
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 15a72a8..8baae8a 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -43,7 +43,7 @@
 
 class TestDeliveryNote(FrappeTestCase):
 	def test_over_billing_against_dn(self):
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		dn = create_delivery_note(do_not_submit=True)
 		self.assertRaises(frappe.ValidationError, make_sales_invoice, dn.name)
@@ -709,7 +709,7 @@
 		# Testing if Customer's Purchase Order No was rightly copied
 		self.assertEqual(so.po_no, si.po_no)
 
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		dn1 = make_delivery_note(so.name)
 		dn1.get("items")[0].qty = 2
@@ -741,7 +741,7 @@
 			make_sales_invoice as make_sales_invoice_from_so,
 		)
 
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		so = make_sales_order()
 
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 9a9ddf4..6f1f981 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -772,12 +772,6 @@
 					if (modal) {
 						$(modal).removeClass("modal-dialog-scrollable");
 					}
-				})
-				.on("awesomplete-close", () => {
-					let modal = field.$input.parents('.modal-dialog')[0];
-					if (modal) {
-						$(modal).addClass("modal-dialog-scrollable");
-					}
 				});
 		});
 	},
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 3cc59be..93d799a 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -585,7 +585,7 @@
 		existing_allow_negative_stock = frappe.db.get_value(
 			"Stock Settings", None, "allow_negative_stock"
 		)
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		repost_stock_for_warehouses = frappe.get_all(
 			"Stock Ledger Entry",
@@ -601,8 +601,8 @@
 		for warehouse in repost_stock_for_warehouses:
 			repost_stock(new_name, warehouse)
 
-		frappe.db.set_value(
-			"Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock
+		frappe.db.set_single_value(
+			"Stock Settings", "allow_negative_stock", existing_allow_negative_stock
 		)
 
 	def update_bom_item_desc(self):
@@ -714,6 +714,7 @@
 						template=self,
 						now=frappe.flags.in_test,
 						timeout=600,
+						enqueue_after_commit=True,
 					)
 
 	def validate_has_variants(self):
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
index 03ff12c..257f263 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
@@ -25,7 +25,7 @@
 
 class TestLandedCostVoucher(FrappeTestCase):
 	def test_landed_cost_voucher(self):
-		frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
+		frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
 
 		pr = make_purchase_receipt(
 			company="_Test Company with perpetual inventory",
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 95c85da..ee247fd 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -115,7 +115,7 @@
 		"""Set title as comma separated list of items"""
 		if not self.title:
 			items = ", ".join([d.item_name for d in self.items][:3])
-			self.title = _("{0} Request for {1}").format(self.material_request_type, items)[:100]
+			self.title = _("{0} Request for {1}").format(_(self.material_request_type), items)[:100]
 
 	def on_submit(self):
 		self.update_requested_qty()
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 03f58c6..e5aff38 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -400,7 +400,7 @@
 		mr.insert()
 		mr.submit()
 
-		frappe.db.set_value("Stock Settings", None, "mr_qty_allowance", 20)
+		frappe.db.set_single_value("Stock Settings", "mr_qty_allowance", 20)
 
 		# map a stock entry
 
diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js
index 54e2631..35c35a6 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.js
+++ b/erpnext/stock/doctype/pick_list/pick_list.js
@@ -12,6 +12,7 @@
 			'Delivery Note': 'Delivery Note',
 			'Stock Entry': 'Stock Entry',
 		};
+
 		frm.set_query('parent_warehouse', () => {
 			return {
 				filters: {
@@ -20,6 +21,7 @@
 				}
 			};
 		});
+
 		frm.set_query('work_order', () => {
 			return {
 				query: 'erpnext.stock.doctype.pick_list.pick_list.get_pending_work_orders',
@@ -28,6 +30,7 @@
 				}
 			};
 		});
+
 		frm.set_query('material_request', () => {
 			return {
 				filters: {
@@ -35,9 +38,11 @@
 				}
 			};
 		});
+
 		frm.set_query('item_code', 'locations', () => {
 			return erpnext.queries.item({ "is_stock_item": 1 });
 		});
+
 		frm.set_query('batch_no', 'locations', (frm, cdt, cdn) => {
 			const row = locals[cdt][cdn];
 			return {
@@ -48,6 +53,29 @@
 				},
 			};
 		});
+
+		frm.set_query("serial_and_batch_bundle", "locations", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('locations', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'warehouse': row.doc.warehouse,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
 	},
 	set_item_locations:(frm, save) => {
 		if (!(frm.doc.locations && frm.doc.locations.length)) {
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 4970bf7..922f76c 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -40,7 +40,7 @@
 		for location in self.get("locations"):
 			if (
 				location.sales_order
-				and frappe.db.get_value("Sales Order", location.sales_order, "per_picked") == 100
+				and frappe.db.get_value("Sales Order", location.sales_order, "per_picked", cache=True) == 100
 			):
 				frappe.throw(
 					_("Row #{}: item {} has been picked already.").format(location.idx, location.item_code)
@@ -384,6 +384,7 @@
 					(pi_item.item_code.isin([x.item_code for x in items]))
 					& ((pi_item.picked_qty > 0) | (pi_item.stock_qty > 0))
 					& (pi.status != "Completed")
+					& (pi.status != "Cancelled")
 					& (pi_item.docstatus != 2)
 				)
 				.groupby(
@@ -497,7 +498,7 @@
 		)
 		qty = stock_qty / (item_doc.conversion_factor or 1)
 
-		uom_must_be_whole_number = frappe.db.get_value("UOM", item_doc.uom, "must_be_whole_number")
+		uom_must_be_whole_number = frappe.get_cached_value("UOM", item_doc.uom, "must_be_whole_number")
 		if uom_must_be_whole_number:
 			qty = floor(qty)
 			stock_qty = qty * item_doc.conversion_factor
diff --git a/erpnext/stock/doctype/pick_list_item/pick_list_item.json b/erpnext/stock/doctype/pick_list_item/pick_list_item.json
index e6653a8..2b519f5 100644
--- a/erpnext/stock/doctype/pick_list_item/pick_list_item.json
+++ b/erpnext/stock/doctype/pick_list_item/pick_list_item.json
@@ -153,7 +153,8 @@
    "fieldtype": "Data",
    "hidden": 1,
    "label": "Sales Order Item",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "serial_no_and_batch_section",
@@ -208,7 +209,7 @@
  ],
  "istable": 1,
  "links": [],
- "modified": "2023-03-12 13:50:22.258100",
+ "modified": "2023-06-16 14:05:51.719959",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Pick List Item",
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
index dc61ec4..b41e971 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
@@ -326,6 +326,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -1239,7 +1240,7 @@
  "idx": 261,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-05-07 20:18:25.458185",
+ "modified": "2023-06-03 16:23:20.781368",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Purchase Receipt",
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 1ac2f35..387f031 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -122,6 +122,7 @@
 			self.set_status()
 
 		self.po_required()
+		self.validate_items_quality_inspection()
 		self.validate_with_previous_doc()
 		self.validate_uom_is_integer("uom", ["qty", "received_qty"])
 		self.validate_uom_is_integer("stock_uom", "stock_qty")
@@ -195,6 +196,26 @@
 				if not d.purchase_order:
 					frappe.throw(_("Purchase Order number required for Item {0}").format(d.item_code))
 
+	def validate_items_quality_inspection(self):
+		for item in self.get("items"):
+			if item.quality_inspection:
+				qi = frappe.db.get_value(
+					"Quality Inspection",
+					item.quality_inspection,
+					["reference_type", "reference_name", "item_code"],
+					as_dict=True,
+				)
+
+				if qi.reference_type != self.doctype or qi.reference_name != self.name:
+					msg = f"""Row #{item.idx}: Please select a valid Quality Inspection with Reference Type
+						{frappe.bold(self.doctype)} and Reference Name {frappe.bold(self.name)}."""
+					frappe.throw(_(msg))
+
+				if qi.item_code != item.item_code:
+					msg = f"""Row #{item.idx}: Please select a valid Quality Inspection with Item Code
+						{frappe.bold(item.item_code)}."""
+					frappe.throw(_(msg))
+
 	def get_already_received_qty(self, po, po_detail):
 		qty = frappe.db.sql(
 			"""select sum(qty) from `tabPurchase Receipt Item`
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index c0ea806..ddc0556 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -27,7 +27,7 @@
 
 class TestPurchaseReceipt(FrappeTestCase):
 	def setUp(self):
-		frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
+		frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
 
 	def test_purchase_receipt_received_qty(self):
 		"""
@@ -1781,6 +1781,52 @@
 		pr.items[0].delivery_note_item = delivery_note_item
 		pr.save()
 
+	def test_purchase_return_valuation_with_rejected_qty(self):
+		item_code = "_Test Item Return Valuation"
+		create_item(item_code)
+
+		warehouse = create_warehouse("_Test Warehouse Return Valuation")
+		rejected_warehouse = create_warehouse("_Test Rejected Warehouse Return Valuation")
+
+		# Step 1: Create Purchase Receipt with valuation rate 100
+		make_purchase_receipt(
+			item_code=item_code,
+			warehouse=warehouse,
+			qty=10,
+			rate=100,
+			rejected_qty=2,
+			rejected_warehouse=rejected_warehouse,
+		)
+
+		# Step 2: Create One more Purchase Receipt with valuation rate 200
+		pr = make_purchase_receipt(
+			item_code=item_code,
+			warehouse=warehouse,
+			qty=10,
+			rate=200,
+			rejected_qty=2,
+			rejected_warehouse=rejected_warehouse,
+		)
+
+		# Step 3: Create Purchase Return for 2 qty
+		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_return
+
+		pr_return = make_purchase_return(pr.name)
+		pr_return.items[0].qty = 2 * -1
+		pr_return.items[0].received_qty = 2 * -1
+		pr_return.items[0].rejected_qty = 0
+		pr_return.items[0].rejected_warehouse = ""
+		pr_return.save()
+		pr_return.submit()
+
+		data = frappe.get_all(
+			"Stock Ledger Entry",
+			filters={"voucher_no": pr_return.name, "docstatus": 1},
+			fields=["SUM(stock_value_difference) as stock_value_difference"],
+		)[0]
+
+		self.assertEqual(abs(data["stock_value_difference"]), 400.00)
+
 
 def prepare_data_for_internal_transfer():
 	from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
@@ -1925,7 +1971,7 @@
 	if not frappe.db.exists("Location", "Test Location"):
 		frappe.get_doc({"doctype": "Location", "location_name": "Test Location"}).insert()
 
-	frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
+	frappe.db.set_single_value("Buying Settings", "allow_multiple_items", 1)
 	pr = frappe.new_doc("Purchase Receipt")
 	args = frappe._dict(args)
 	pr.posting_date = args.posting_date or today()
diff --git a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
index 9d2e139..f5f8c3a 100644
--- a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
@@ -167,13 +167,13 @@
 			reference_type="Stock Entry", reference_name=se.name, readings=readings, status="Rejected"
 		)
 
-		frappe.db.set_value("Stock Settings", None, "action_if_quality_inspection_is_rejected", "Stop")
+		frappe.db.set_single_value("Stock Settings", "action_if_quality_inspection_is_rejected", "Stop")
 		se.reload()
 		self.assertRaises(
 			QualityInspectionRejectedError, se.submit
 		)  # when blocked in Stock settings, block rejected QI
 
-		frappe.db.set_value("Stock Settings", None, "action_if_quality_inspection_is_rejected", "Warn")
+		frappe.db.set_single_value("Stock Settings", "action_if_quality_inspection_is_rejected", "Warn")
 		se.reload()
 		se.submit()  # when allowed in Stock settings, allow rejected QI
 
@@ -182,7 +182,7 @@
 		qa.cancel()
 		se.reload()
 		se.cancel()
-		frappe.db.set_value("Stock Settings", None, "action_if_quality_inspection_is_rejected", "Stop")
+		frappe.db.set_single_value("Stock Settings", "action_if_quality_inspection_is_rejected", "Stop")
 
 	def test_qi_status(self):
 		make_stock_entry(
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js
index b02ad71..cda4445 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js
@@ -127,6 +127,14 @@
 	},
 
 	toggle_fields(frm) {
+		if (frm.doc.has_serial_no) {
+			frm.doc.entries.forEach(row => {
+				if (Math.abs(row.qty) !== 1) {
+					frappe.model.set_value(row.doctype, row.name, "qty", 1);
+				}
+			})
+		}
+
 		frm.fields_dict.entries.grid.update_docfield_property(
 			'serial_no', 'read_only', !frm.doc.has_serial_no
 		);
@@ -134,6 +142,10 @@
 		frm.fields_dict.entries.grid.update_docfield_property(
 			'batch_no', 'read_only', !frm.doc.has_batch_no
 		);
+
+		frm.fields_dict.entries.grid.update_docfield_property(
+			'qty', 'read_only', frm.doc.has_serial_no
+		);
 	},
 
 	set_queries(frm) {
@@ -149,6 +161,23 @@
 					'istable': 0,
 					'issingle': 0,
 					'is_submittable': 1,
+					'name': ['in', [
+						"Asset Capitalization",
+						"Asset Repair",
+						"Delivery Note",
+						"Installation Note",
+						"Job Card",
+						"Maintenance Schedule",
+						"POS Invoice",
+						"Pick List",
+						"Purchase Invoice",
+						"Purchase Receipt",
+						"Quotation",
+						"Sales Invoice",
+						"Stock Entry",
+						"Stock Reconciliation",
+						"Subcontracting Receipt",
+					]],
 				}
 			};
 		});
@@ -182,6 +211,7 @@
 			return {
 				filters: {
 					item: frm.doc.item_code,
+					disabled: 0,
 				}
 			};
 		});
@@ -198,9 +228,9 @@
 
 
 frappe.ui.form.on("Serial and Batch Entry", {
-	ledgers_add(frm, cdt, cdn) {
+	entries_add(frm, cdt, cdn) {
 		if (frm.doc.warehouse) {
-			locals[cdt][cdn].warehouse = frm.doc.warehouse;
+			frappe.model.set_value(cdt, cdn, 'warehouse', frm.doc.warehouse);
 		}
 	},
 })
\ No newline at end of file
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
index 7e5cac9..57bb71e 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
@@ -122,7 +122,12 @@
 		frappe.throw(_(message), exception, title=_("Error"))
 
 	def set_incoming_rate(self, row=None, save=False):
-		if self.type_of_transaction not in ["Inward", "Outward"]:
+		if self.type_of_transaction not in ["Inward", "Outward"] or self.voucher_type in [
+			"Installation Note",
+			"Job Card",
+			"Maintenance Schedule",
+			"Pick List",
+		]:
 			return
 
 		if self.type_of_transaction == "Outward":
@@ -133,7 +138,7 @@
 	def calculate_total_qty(self, save=True):
 		self.total_qty = 0.0
 		for d in self.entries:
-			d.qty = abs(d.qty) if d.qty else 0
+			d.qty = 1 if self.has_serial_no and abs(d.qty) > 1 else abs(d.qty) if d.qty else 0
 			d.stock_value_difference = abs(d.stock_value_difference) if d.stock_value_difference else 0
 			if self.type_of_transaction == "Outward":
 				d.qty *= -1
@@ -220,7 +225,7 @@
 
 	def set_incoming_rate_for_inward_transaction(self, row=None, save=False):
 		valuation_field = "valuation_rate"
-		if self.voucher_type in ["Sales Invoice", "Delivery Note"]:
+		if self.voucher_type in ["Sales Invoice", "Delivery Note", "Quotation"]:
 			valuation_field = "incoming_rate"
 
 		if self.voucher_type == "POS Invoice":
@@ -229,8 +234,10 @@
 		rate = row.get(valuation_field) if row else 0.0
 		child_table = self.child_table
 
-		if self.voucher_type == "Subcontracting Receipt" and self.voucher_detail_no:
-			if frappe.db.exists("Subcontracting Receipt Supplied Item", self.voucher_detail_no):
+		if self.voucher_type == "Subcontracting Receipt":
+			if not self.voucher_detail_no:
+				return
+			elif frappe.db.exists("Subcontracting Receipt Supplied Item", self.voucher_detail_no):
 				valuation_field = "rate"
 				child_table = "Subcontracting Receipt Supplied Item"
 			else:
@@ -563,11 +570,21 @@
 
 	@property
 	def child_table(self):
-		table = f"{self.voucher_type} Item"
-		if self.voucher_type == "Stock Entry":
-			table = f"{self.voucher_type} Detail"
+		if self.voucher_type == "Job Card":
+			return
 
-		return table
+		parent_child_map = {
+			"Asset Capitalization": "Asset Capitalization Stock Item",
+			"Asset Repair": "Asset Repair Consumed Item",
+			"Quotation": "Packed Item",
+			"Stock Entry": "Stock Entry Detail",
+		}
+
+		return (
+			parent_child_map[self.voucher_type]
+			if self.voucher_type in parent_child_map
+			else f"{self.voucher_type} Item"
+		)
 
 	def delink_refernce_from_voucher(self):
 		or_filters = {"serial_and_batch_bundle": self.name}
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle_list.js b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle_list.js
new file mode 100644
index 0000000..355fcd0
--- /dev/null
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle_list.js
@@ -0,0 +1,11 @@
+// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.listview_settings["Serial and Batch Bundle"] = {
+	add_fields: ["is_cancelled"],
+	get_indicator: function (doc) {
+		if (doc.is_cancelled) {
+			return [__("Cancelled"), "red", "is_cancelled,=,1"];
+		}
+	},
+};
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 2c8e7a7..403e04a 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -103,6 +103,27 @@
 			}
 		});
 
+		frm.set_query("serial_and_batch_bundle", "items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
 
 		frm.add_fetch("bom_no", "inspection_required", "inspection_required");
 		erpnext.accounts.dimensions.setup_dimension_filters(frm, frm.doctype);
@@ -656,6 +677,21 @@
 			});
 		}
 	},
+
+	process_loss_qty(frm) {
+		if (frm.doc.process_loss_qty) {
+			frm.doc.process_loss_percentage = flt(frm.doc.process_loss_qty / frm.doc.fg_completed_qty * 100, precision("process_loss_qty", frm.doc));
+			refresh_field("process_loss_percentage");
+		}
+	},
+
+	process_loss_percentage(frm) {
+		debugger
+		if (frm.doc.process_loss_percentage) {
+			frm.doc.process_loss_qty = flt((frm.doc.fg_completed_qty * frm.doc.process_loss_percentage) / 100 , precision("process_loss_qty", frm.doc));
+			refresh_field("process_loss_qty");
+		}
+	}
 });
 
 frappe.ui.form.on('Stock Entry Detail', {
@@ -1087,7 +1123,7 @@
 			if (r.message && (r.message.has_batch_no || r.message.has_serial_no)) {
 				item.has_serial_no = r.message.has_serial_no;
 				item.has_batch_no = r.message.has_batch_no;
-				item.outward = item.s_warehouse ? 1 : 0;
+				item.type_of_transaction = item.s_warehouse ? "Outward" : "Inward";
 
 				frappe.require(path, function() {
 					new erpnext.SerialBatchPackageSelector(
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json
index bc5533f..564c380 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.json
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.json
@@ -24,6 +24,7 @@
   "company",
   "posting_date",
   "posting_time",
+  "column_break_eaoa",
   "set_posting_time",
   "inspection_required",
   "apply_putaway_rule",
@@ -124,7 +125,8 @@
    "oldfieldname": "purpose",
    "oldfieldtype": "Select",
    "options": "Material Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSend to Subcontractor",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "company",
@@ -576,7 +578,8 @@
    "fieldtype": "Link",
    "label": "Pick List",
    "options": "Pick List",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "fieldname": "print_settings_col_break",
@@ -640,16 +643,16 @@
   },
   {
    "collapsible": 1,
+   "depends_on": "eval: doc.fg_completed_qty > 0 && in_list([\"Manufacture\", \"Repack\"], doc.purpose)",
    "fieldname": "section_break_7qsm",
    "fieldtype": "Section Break",
    "label": "Process Loss"
   },
   {
-   "depends_on": "process_loss_percentage",
+   "depends_on": "eval: doc.fg_completed_qty > 0 && in_list([\"Manufacture\", \"Repack\"], doc.purpose)",
    "fieldname": "process_loss_qty",
    "fieldtype": "Float",
-   "label": "Process Loss Qty",
-   "read_only": 1
+   "label": "Process Loss Qty"
   },
   {
    "fieldname": "column_break_e92r",
@@ -657,8 +660,6 @@
   },
   {
    "depends_on": "eval:doc.from_bom && doc.fg_completed_qty",
-   "fetch_from": "bom_no.process_loss_percentage",
-   "fetch_if_empty": 1,
    "fieldname": "process_loss_percentage",
    "fieldtype": "Percent",
    "label": "% Process Loss"
@@ -667,6 +668,10 @@
    "fieldname": "items_section",
    "fieldtype": "Section Break",
    "label": "Items"
+  },
+  {
+   "fieldname": "column_break_eaoa",
+   "fieldtype": "Column Break"
   }
  ],
  "icon": "fa fa-file-text",
@@ -674,7 +679,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-04-06 12:42:56.673180",
+ "modified": "2023-06-19 18:23:40.748114",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Entry",
@@ -735,7 +740,6 @@
    "read": 1,
    "report": 1,
    "role": "Stock Manager",
-   "set_user_permissions": 1,
    "share": 1,
    "submit": 1,
    "write": 1
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index f19df83..d9b5503 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -266,10 +266,10 @@
 			return
 
 		for row in self.items:
-			if row.job_card_item:
+			if row.job_card_item or not row.s_warehouse:
 				continue
 
-			msg = f"""Row #{0}: The job card item reference
+			msg = f"""Row #{row.idx}: The job card item reference
 				is missing. Kindly create the stock entry
 				from the job card. If you have added the row manually
 				then you won't be able to add job card item reference."""
@@ -442,13 +442,16 @@
 		if self.purpose == "Manufacture" and self.work_order:
 			for d in self.items:
 				if d.is_finished_item:
+					if self.process_loss_qty:
+						d.qty = self.fg_completed_qty - self.process_loss_qty
+
 					item_wise_qty.setdefault(d.item_code, []).append(d.qty)
 
 		precision = frappe.get_precision("Stock Entry Detail", "qty")
 		for item_code, qty_list in item_wise_qty.items():
 			total = flt(sum(qty_list), precision)
 
-			if (self.fg_completed_qty - total) > 0:
+			if (self.fg_completed_qty - total) > 0 and not self.process_loss_qty:
 				self.process_loss_qty = flt(self.fg_completed_qty - total, precision)
 				self.process_loss_percentage = flt(self.process_loss_qty * 100 / self.fg_completed_qty)
 
@@ -578,7 +581,9 @@
 
 		for d in prod_order.get("operations"):
 			total_completed_qty = flt(self.fg_completed_qty) + flt(prod_order.produced_qty)
-			completed_qty = d.completed_qty + (allowance_percentage / 100 * d.completed_qty)
+			completed_qty = (
+				d.completed_qty + d.process_loss_qty + (allowance_percentage / 100 * d.completed_qty)
+			)
 			if total_completed_qty > flt(completed_qty):
 				job_card = frappe.db.get_value("Job Card", {"operation_id": d.name}, "name")
 				if not job_card:
@@ -1640,16 +1645,36 @@
 		if self.purpose not in ("Manufacture", "Repack"):
 			return
 
-		self.process_loss_qty = 0.0
-		if not self.process_loss_percentage:
+		precision = self.precision("process_loss_qty")
+		if self.work_order:
+			data = frappe.get_all(
+				"Work Order Operation",
+				filters={"parent": self.work_order},
+				fields=["max(process_loss_qty) as process_loss_qty"],
+			)
+
+			if data and data[0].process_loss_qty is not None:
+				process_loss_qty = data[0].process_loss_qty
+				if flt(self.process_loss_qty, precision) != flt(process_loss_qty, precision):
+					self.process_loss_qty = flt(process_loss_qty, precision)
+
+					frappe.msgprint(
+						_("The Process Loss Qty has reset as per job cards Process Loss Qty"), alert=True
+					)
+
+		if not self.process_loss_percentage and not self.process_loss_qty:
 			self.process_loss_percentage = frappe.get_cached_value(
 				"BOM", self.bom_no, "process_loss_percentage"
 			)
 
-		if self.process_loss_percentage:
+		if self.process_loss_percentage and not self.process_loss_qty:
 			self.process_loss_qty = flt(
 				(flt(self.fg_completed_qty) * flt(self.process_loss_percentage)) / 100
 			)
+		elif self.process_loss_qty and not self.process_loss_percentage:
+			self.process_loss_percentage = flt(
+				(flt(self.process_loss_qty) / flt(self.fg_completed_qty)) * 100
+			)
 
 	def set_work_order_details(self):
 		if not getattr(self, "pro_doc", None):
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 64d81f6..cc8a108 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -55,7 +55,7 @@
 		frappe.set_user("Administrator")
 
 	def test_fifo(self):
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 		item_code = "_Test Item 2"
 		warehouse = "_Test Warehouse - _TC"
 
@@ -142,7 +142,7 @@
 			or 0
 		)
 
-		frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
+		frappe.db.set_single_value("Stock Settings", "auto_indent", 1)
 
 		# update re-level qty so that it is more than projected_qty
 		if projected_qty >= variant.reorder_levels[0].warehouse_reorder_level:
@@ -154,7 +154,7 @@
 
 		mr_list = reorder_item()
 
-		frappe.db.set_value("Stock Settings", None, "auto_indent", 0)
+		frappe.db.set_single_value("Stock Settings", "auto_indent", 0)
 
 		items = []
 		for mr in mr_list:
@@ -792,24 +792,24 @@
 		remove_user_permission("Company", "_Test Company 1", "test2@example.com")
 
 	def test_freeze_stocks(self):
-		frappe.db.set_value("Stock Settings", None, "stock_auth_role", "")
+		frappe.db.set_single_value("Stock Settings", "stock_auth_role", "")
 
 		# test freeze_stocks_upto
-		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto", add_days(nowdate(), 5))
+		frappe.db.set_single_value("Stock Settings", "stock_frozen_upto", add_days(nowdate(), 5))
 		se = frappe.copy_doc(test_records[0]).insert()
 		self.assertRaises(StockFreezeError, se.submit)
 
-		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto", "")
+		frappe.db.set_single_value("Stock Settings", "stock_frozen_upto", "")
 
 		# test freeze_stocks_upto_days
-		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", -1)
+		frappe.db.set_single_value("Stock Settings", "stock_frozen_upto_days", -1)
 		se = frappe.copy_doc(test_records[0])
 		se.set_posting_time = 1
 		se.posting_date = nowdate()
 		se.set_stock_entry_type()
 		se.insert()
 		self.assertRaises(StockFreezeError, se.submit)
-		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 0)
+		frappe.db.set_single_value("Stock Settings", "stock_frozen_upto_days", 0)
 
 	def test_work_order(self):
 		from erpnext.manufacturing.doctype.work_order.work_order import (
@@ -1211,7 +1211,7 @@
 		)
 
 	def test_conversion_factor_change(self):
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 		repack_entry = frappe.copy_doc(test_records[3])
 		repack_entry.posting_date = nowdate()
 		repack_entry.posting_time = nowtime()
diff --git a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
index a398855..f7c6ffe 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
@@ -416,8 +416,8 @@
 
 	def test_back_dated_entry_not_allowed(self):
 		# Back dated stock transactions are only allowed to stock managers
-		frappe.db.set_value(
-			"Stock Settings", None, "role_allowed_to_create_edit_back_dated_transactions", "Stock Manager"
+		frappe.db.set_single_value(
+			"Stock Settings", "role_allowed_to_create_edit_back_dated_transactions", "Stock Manager"
 		)
 
 		# Set User with Stock User role but not Stock Manager
@@ -453,8 +453,8 @@
 			stock_entry_on_today.cancel()
 
 		finally:
-			frappe.db.set_value(
-				"Stock Settings", None, "role_allowed_to_create_edit_back_dated_transactions", None
+			frappe.db.set_single_value(
+				"Stock Settings", "role_allowed_to_create_edit_back_dated_transactions", None
 			)
 			frappe.set_user("Administrator")
 			user.remove_roles("Stock Manager")
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
index d584858..0664c29 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
@@ -30,6 +30,29 @@
 			};
 		});
 
+		frm.set_query("serial_and_batch_bundle", "items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.item_code,
+					'warehouse': row.doc.warehouse,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
+
 		if (frm.doc.company) {
 			erpnext.queries.setup_queries(frm, "Warehouse", function() {
 				return erpnext.queries.warehouse(frm.doc);
@@ -274,6 +297,10 @@
 		}
 	},
 
+	add_serial_batch_bundle(frm, cdt, cdn) {
+		erpnext.utils.pick_serial_and_batch_bundle(frm, cdt, cdn, "Inward");
+	}
+
 });
 
 erpnext.stock.StockReconciliation = class StockReconciliation extends erpnext.stock.StockController {
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 4004c00..6ea27ed 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -193,7 +193,13 @@
 
 		def _changed(item):
 			if item.current_serial_and_batch_bundle:
-				self.calculate_difference_amount(item, frappe._dict({}))
+				bundle_data = frappe.get_all(
+					"Serial and Batch Bundle",
+					filters={"name": item.current_serial_and_batch_bundle},
+					fields=["total_qty as qty", "avg_rate as rate"],
+				)[0]
+
+				self.calculate_difference_amount(item, bundle_data)
 				return True
 
 			item_dict = get_stock_balance_for(
@@ -446,16 +452,17 @@
 
 			sl_entries.append(args)
 
-		args = self.get_sle_for_items(row)
-		args.update(
-			{
-				"actual_qty": row.qty,
-				"incoming_rate": row.valuation_rate,
-				"serial_and_batch_bundle": row.serial_and_batch_bundle,
-			}
-		)
+		if row.qty != 0:
+			args = self.get_sle_for_items(row)
+			args.update(
+				{
+					"actual_qty": row.qty,
+					"incoming_rate": row.valuation_rate,
+					"serial_and_batch_bundle": row.serial_and_batch_bundle,
+				}
+			)
 
-		sl_entries.append(args)
+			sl_entries.append(args)
 
 	def update_valuation_rate_for_serial_no(self):
 		for d in self.items:
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index a04e2da..4817c8d 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -33,7 +33,7 @@
 	def setUpClass(cls):
 		create_batch_or_serial_no_items()
 		super().setUpClass()
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 	def tearDown(self):
 		frappe.local.future_sle = {}
diff --git a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
index 8738f4a..62d6e4c 100644
--- a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
+++ b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json
@@ -103,7 +103,8 @@
   {
    "fieldname": "serial_no",
    "fieldtype": "Long Text",
-   "label": "Serial No"
+   "label": "Serial No",
+   "read_only": 1
   },
   {
    "fieldname": "column_break_11",
@@ -213,7 +214,7 @@
  ],
  "istable": 1,
  "links": [],
- "modified": "2023-05-27 17:35:31.026852",
+ "modified": "2023-06-15 11:45:55.808942",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Reconciliation Item",
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py
index e25c843..3b6db64 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.py
@@ -94,6 +94,7 @@
 			frappe.enqueue(
 				"erpnext.stock.doctype.stock_settings.stock_settings.clean_all_descriptions",
 				now=frappe.flags.in_test,
+				enqueue_after_commit=True,
 			)
 
 	def validate_pending_reposts(self):
diff --git a/erpnext/stock/doctype/stock_settings/test_stock_settings.py b/erpnext/stock/doctype/stock_settings/test_stock_settings.py
index 974e163..cda739e 100644
--- a/erpnext/stock/doctype/stock_settings/test_stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/test_stock_settings.py
@@ -10,7 +10,7 @@
 class TestStockSettings(FrappeTestCase):
 	def setUp(self):
 		super().setUp()
-		frappe.db.set_value("Stock Settings", None, "clean_description_html", 0)
+		frappe.db.set_single_value("Stock Settings", "clean_description_html", 0)
 
 	def test_settings(self):
 		item = frappe.get_doc(
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 64650bc..4f85ac0 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -191,7 +191,6 @@
 	return args
 
 
-@frappe.whitelist()
 def get_item_code(barcode=None, serial_no=None):
 	if barcode:
 		item_code = frappe.db.get_value("Item Barcode", {"barcode": barcode}, fieldname=["parent"])
diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py
index d3f1f31..d0929a0 100644
--- a/erpnext/stock/report/stock_ageing/stock_ageing.py
+++ b/erpnext/stock/report/stock_ageing/stock_ageing.py
@@ -96,14 +96,14 @@
 	range1 = range2 = range3 = above_range3 = 0.0
 
 	for item in fifo_queue:
-		age = date_diff(to_date, item[1])
+		age = flt(date_diff(to_date, item[1]))
 		qty = flt(item[0]) if not item_dict["has_serial_no"] else 1.0
 
-		if age <= filters.range1:
+		if age <= flt(filters.range1):
 			range1 = flt(range1 + qty, precision)
-		elif age <= filters.range2:
+		elif age <= flt(filters.range2):
 			range2 = flt(range2 + qty, precision)
-		elif age <= filters.range3:
+		elif age <= flt(filters.range3):
 			range3 = flt(range3 + qty, precision)
 		else:
 			above_range3 = flt(above_range3 + qty, precision)
diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py
index a75c3b0..2c18f99 100644
--- a/erpnext/stock/serial_batch_bundle.py
+++ b/erpnext/stock/serial_batch_bundle.py
@@ -5,7 +5,7 @@
 from frappe import _, bold
 from frappe.model.naming import make_autoname
 from frappe.query_builder.functions import CombineDatetime, Sum
-from frappe.utils import cint, flt, now, nowtime, today
+from frappe.utils import cint, flt, get_link_to_form, now, nowtime, today
 
 from erpnext.stock.deprecated_serial_batch import (
 	DeprecatedBatchNoValuation,
@@ -79,9 +79,24 @@
 		self.set_serial_and_batch_bundle(sn_doc)
 
 	def validate_actual_qty(self, sn_doc):
+		link = get_link_to_form("Serial and Batch Bundle", sn_doc.name)
+
+		condition = {
+			"Inward": self.sle.actual_qty > 0,
+			"Outward": self.sle.actual_qty < 0,
+		}.get(sn_doc.type_of_transaction)
+
+		if not condition:
+			correct_type = "Inward"
+			if sn_doc.type_of_transaction == "Inward":
+				correct_type = "Outward"
+
+			msg = f"The type of transaction of Serial and Batch Bundle {link} is {bold(sn_doc.type_of_transaction)} but as per the Actual Qty {self.sle.actual_qty} for the item {bold(self.sle.item_code)} in the {self.sle.voucher_type} {self.sle.voucher_no} the type of transaction should be {bold(correct_type)}"
+			frappe.throw(_(msg), title=_("Incorrect Type of Transaction"))
+
 		precision = sn_doc.precision("total_qty")
 		if flt(sn_doc.total_qty, precision) != flt(self.sle.actual_qty, precision):
-			msg = f"Total qty {flt(sn_doc.total_qty, precision)} of Serial and Batch Bundle {sn_doc.name} is not equal to Actual Qty {flt(self.sle.actual_qty, precision)} in the {self.sle.voucher_type} {self.sle.voucher_no}"
+			msg = f"Total qty {flt(sn_doc.total_qty, precision)} of Serial and Batch Bundle {link} is not equal to Actual Qty {flt(self.sle.actual_qty, precision)} in the {self.sle.voucher_type} {self.sle.voucher_no}"
 			frappe.throw(_(msg))
 
 	def validate_item(self):
diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py
index 4886755..a4fe2ee 100644
--- a/erpnext/stock/stock_balance.py
+++ b/erpnext/stock/stock_balance.py
@@ -18,7 +18,7 @@
 		existing_allow_negative_stock = frappe.db.get_value(
 			"Stock Settings", None, "allow_negative_stock"
 		)
-		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 	item_warehouses = frappe.db.sql(
 		"""
@@ -37,8 +37,8 @@
 			frappe.db.rollback()
 
 	if allow_negative_stock:
-		frappe.db.set_value(
-			"Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock
+		frappe.db.set_single_value(
+			"Stock Settings", "allow_negative_stock", existing_allow_negative_stock
 		)
 	frappe.db.auto_commit_on_many_writes = 0
 
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index dc481e8..b3ed220 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -944,7 +944,7 @@
 
 			for item in sr.items:
 				# Skip for Serial and Batch Items
-				if item.serial_no or item.batch_no:
+				if item.name != sle.voucher_detail_no or item.serial_no or item.batch_no:
 					continue
 
 				previous_sle = get_previous_sle(
@@ -962,6 +962,7 @@
 				item.current_amount = flt(item.current_qty) * flt(item.current_valuation_rate)
 
 				item.amount = flt(item.qty) * flt(item.valuation_rate)
+				item.quantity_difference = item.qty - item.current_qty
 				item.amount_difference = item.amount - item.current_amount
 			else:
 				sr.difference_amount = sum([item.amount_difference for item in sr.items])
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 402f998..0244406 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -475,7 +475,7 @@
 
 	for row_idx, row in enumerate(result):
 		for convertible_col, data in convertible_column_map.items():
-			conversion_factor = conversion_factors[row.get("item_code")] or 1
+			conversion_factor = conversion_factors.get(row.get("item_code")) or 1.0
 			for_type = data.for_type
 			value_before_conversion = row.get(convertible_col)
 			if for_type == "rate":
diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
index f98f559..28c52c9 100644
--- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
+++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
@@ -1,511 +1,512 @@
 {
-    "actions": [],
-    "allow_auto_repeat": 1,
-    "allow_import": 1,
-    "autoname": "naming_series:",
-    "creation": "2022-04-01 22:39:17.662819",
-    "doctype": "DocType",
-    "document_type": "Document",
-    "engine": "InnoDB",
-    "field_order": [
-        "title",
-        "naming_series",
-        "purchase_order",
-        "supplier",
-        "supplier_name",
-        "supplier_warehouse",
-        "column_break_7",
-        "company",
-        "transaction_date",
-        "schedule_date",
-        "amended_from",
-        "accounting_dimensions_section",
-        "cost_center",
-        "dimension_col_break",
-        "project",
-        "address_and_contact_section",
-        "supplier_address",
-        "address_display",
-        "contact_person",
-        "contact_display",
-        "contact_mobile",
-        "contact_email",
-        "column_break_19",
-        "shipping_address",
-        "shipping_address_display",
-        "billing_address",
-        "billing_address_display",
-        "section_break_24",
-        "column_break_25",
-        "set_warehouse",
-        "items",
-        "section_break_32",
-        "total_qty",
-        "column_break_29",
-        "total",
-        "service_items_section",
-        "service_items",
-        "raw_materials_supplied_section",
-        "set_reserve_warehouse",
-        "supplied_items",
-        "additional_costs_section",
-        "distribute_additional_costs_based_on",
-        "additional_costs",
-        "total_additional_costs",
-        "order_status_section",
-        "status",
-        "column_break_39",
-        "per_received",
-        "printing_settings_section",
-        "select_print_heading",
-        "column_break_43",
-        "letter_head"
-    ],
-    "fields": [
-        {
-            "allow_on_submit": 1,
-            "default": "{supplier_name}",
-            "fieldname": "title",
-            "fieldtype": "Data",
-            "hidden": 1,
-            "label": "Title",
-            "no_copy": 1,
-            "print_hide": 1
-        },
-        {
-            "fieldname": "naming_series",
-            "fieldtype": "Select",
-            "label": "Series",
-            "no_copy": 1,
-            "options": "SC-ORD-.YYYY.-",
-            "print_hide": 1,
-            "reqd": 1,
-            "set_only_once": 1
-        },
-        {
-            "fieldname": "purchase_order",
-            "fieldtype": "Link",
-            "label": "Subcontracting Purchase Order",
-            "options": "Purchase Order",
-            "reqd": 1
-        },
-        {
-            "bold": 1,
-            "fieldname": "supplier",
-            "fieldtype": "Link",
-            "in_global_search": 1,
-            "in_standard_filter": 1,
-            "label": "Supplier",
-            "options": "Supplier",
-            "print_hide": 1,
-            "reqd": 1,
-            "search_index": 1
-        },
-        {
-            "bold": 1,
-            "fetch_from": "supplier.supplier_name",
-            "fieldname": "supplier_name",
-            "fieldtype": "Data",
-            "in_global_search": 1,
-            "label": "Supplier Name",
-            "read_only": 1,
-            "reqd": 1
-        },
-        {
-            "depends_on": "supplier",
-            "fieldname": "supplier_warehouse",
-            "fieldtype": "Link",
-            "label": "Supplier Warehouse",
-            "options": "Warehouse",
-            "reqd": 1
-        },
-        {
-            "fieldname": "column_break_7",
-            "fieldtype": "Column Break",
-            "print_width": "50%",
-            "width": "50%"
-        },
-        {
-            "fieldname": "company",
-            "fieldtype": "Link",
-            "in_standard_filter": 1,
-            "label": "Company",
-            "options": "Company",
-            "print_hide": 1,
-            "remember_last_selected_value": 1,
-            "reqd": 1
-        },
-        {
-            "default": "Today",
-            "fetch_from": "purchase_order.transaction_date",
-            "fetch_if_empty": 1,
-            "fieldname": "transaction_date",
-            "fieldtype": "Date",
-            "in_list_view": 1,
-            "label": "Date",
-            "reqd": 1,
-            "search_index": 1
-        },
-        {
-            "allow_on_submit": 1,
-            "fetch_from": "purchase_order.schedule_date",
-            "fetch_if_empty": 1,
-            "fieldname": "schedule_date",
-            "fieldtype": "Date",
-            "label": "Required By",
-            "read_only": 1
-        },
-        {
-            "fieldname": "amended_from",
-            "fieldtype": "Link",
-            "ignore_user_permissions": 1,
-            "label": "Amended From",
-            "no_copy": 1,
-            "options": "Subcontracting Order",
-            "print_hide": 1,
-            "read_only": 1
-        },
-        {
-            "collapsible": 1,
-            "fieldname": "address_and_contact_section",
-            "fieldtype": "Section Break",
-            "label": "Address and Contact"
-        },
-        {
-            "fetch_from": "supplier.supplier_primary_address",
-            "fetch_if_empty": 1,
-            "fieldname": "supplier_address",
-            "fieldtype": "Link",
-            "label": "Supplier Address",
-            "options": "Address",
-            "print_hide": 1
-        },
-        {
-            "fieldname": "address_display",
-            "fieldtype": "Small Text",
-            "label": "Supplier Address Details",
-            "read_only": 1
-        },
-        {
-            "fetch_from": "supplier.supplier_primary_contact",
-            "fetch_if_empty": 1,
-            "fieldname": "contact_person",
-            "fieldtype": "Link",
-            "label": "Supplier Contact",
-            "options": "Contact",
-            "print_hide": 1
-        },
-        {
-            "fieldname": "contact_display",
-            "fieldtype": "Small Text",
-            "in_global_search": 1,
-            "label": "Contact Name",
-            "read_only": 1
-        },
-        {
-            "fieldname": "contact_mobile",
-            "fieldtype": "Small Text",
-            "label": "Contact Mobile No",
-            "read_only": 1
-        },
-        {
-            "fieldname": "contact_email",
-            "fieldtype": "Small Text",
-            "label": "Contact Email",
-            "options": "Email",
-            "print_hide": 1,
-            "read_only": 1
-        },
-        {
-            "fieldname": "column_break_19",
-            "fieldtype": "Column Break"
-        },
-        {
-            "fieldname": "shipping_address",
-            "fieldtype": "Link",
-            "label": "Company Shipping Address",
-            "options": "Address",
-            "print_hide": 1
-        },
-        {
-            "fieldname": "shipping_address_display",
-            "fieldtype": "Small Text",
-            "label": "Shipping Address Details",
-            "print_hide": 1,
-            "read_only": 1
-        },
-        {
-            "fieldname": "billing_address",
-            "fieldtype": "Link",
-            "label": "Company Billing Address",
-            "options": "Address"
-        },
-        {
-            "fieldname": "billing_address_display",
-            "fieldtype": "Small Text",
-            "label": "Billing Address Details",
-            "read_only": 1
-        },
-        {
-            "fieldname": "section_break_24",
-            "fieldtype": "Section Break"
-        },
-        {
-            "fieldname": "column_break_25",
-            "fieldtype": "Column Break"
-        },
-        {
-            "depends_on": "purchase_order",
-            "description": "Sets 'Warehouse' in each row of the Items table.",
-            "fieldname": "set_warehouse",
-            "fieldtype": "Link",
-            "label": "Set Target Warehouse",
-            "options": "Warehouse",
-            "print_hide": 1
-        },
-        {
-            "allow_bulk_edit": 1,
-            "depends_on": "purchase_order",
-            "fieldname": "items",
-            "fieldtype": "Table",
-            "label": "Items",
-            "options": "Subcontracting Order Item",
-            "reqd": 1
-        },
-        {
-            "fieldname": "section_break_32",
-            "fieldtype": "Section Break"
-        },
-        {
-            "depends_on": "purchase_order",
-            "fieldname": "total_qty",
-            "fieldtype": "Float",
-            "label": "Total Quantity",
-            "read_only": 1
-        },
-        {
-            "fieldname": "column_break_29",
-            "fieldtype": "Column Break"
-        },
-        {
-            "depends_on": "purchase_order",
-            "fieldname": "total",
-            "fieldtype": "Currency",
-            "label": "Total",
-            "options": "currency",
-            "read_only": 1
-        },
-        {
-            "collapsible": 1,
-            "depends_on": "purchase_order",
-            "fieldname": "service_items_section",
-            "fieldtype": "Section Break",
-            "label": "Service Items"
-        },
-        {
-            "fieldname": "service_items",
-            "fieldtype": "Table",
-            "label": "Service Items",
-            "options": "Subcontracting Order Service Item",
-            "read_only": 1,
-            "reqd": 1
-        },
-        {
-            "collapsible": 1,
-            "collapsible_depends_on": "supplied_items",
-            "depends_on": "supplied_items",
-            "fieldname": "raw_materials_supplied_section",
-            "fieldtype": "Section Break",
-            "label": "Raw Materials Supplied"
-        },
-        {
-            "depends_on": "supplied_items",
-            "description": "Sets 'Reserve Warehouse' in each row of the Supplied Items table.",
-            "fieldname": "set_reserve_warehouse",
-            "fieldtype": "Link",
-            "label": "Set Reserve Warehouse",
-            "options": "Warehouse"
-        },
-        {
-            "fieldname": "supplied_items",
-            "fieldtype": "Table",
-            "label": "Supplied Items",
-            "no_copy": 1,
-            "options": "Subcontracting Order Supplied Item",
-            "print_hide": 1,
-            "read_only": 1
-        },
-        {
-            "collapsible": 1,
-            "collapsible_depends_on": "total_additional_costs",
-            "depends_on": "eval:(doc.docstatus == 0 || doc.total_additional_costs)",
-            "fieldname": "additional_costs_section",
-            "fieldtype": "Section Break",
-            "label": "Additional Costs"
-        },
-        {
-            "fieldname": "additional_costs",
-            "fieldtype": "Table",
-            "label": "Additional Costs",
-            "options": "Landed Cost Taxes and Charges"
-        },
-        {
-            "fieldname": "total_additional_costs",
-            "fieldtype": "Currency",
-            "label": "Total Additional Costs",
-            "print_hide_if_no_value": 1,
-            "read_only": 1
-        },
-        {
-            "collapsible": 1,
-            "fieldname": "order_status_section",
-            "fieldtype": "Section Break",
-            "label": "Order Status"
-        },
-        {
-            "default": "Draft",
-            "fieldname": "status",
-            "fieldtype": "Select",
-            "in_standard_filter": 1,
-            "label": "Status",
-            "no_copy": 1,
-            "options": "Draft\nOpen\nPartially Received\nCompleted\nMaterial Transferred\nPartial Material Transferred\nCancelled",
-            "print_hide": 1,
-            "read_only": 1,
-            "reqd": 1,
-            "search_index": 1
-        },
-        {
-            "fieldname": "column_break_39",
-            "fieldtype": "Column Break"
-        },
-        {
-            "depends_on": "eval:!doc.__islocal",
-            "fieldname": "per_received",
-            "fieldtype": "Percent",
-            "in_list_view": 1,
-            "label": "% Received",
-            "no_copy": 1,
-            "print_hide": 1,
-            "read_only": 1
-        },
-        {
-            "collapsible": 1,
-            "fieldname": "printing_settings_section",
-            "fieldtype": "Section Break",
-            "label": "Printing Settings",
-            "print_hide": 1,
-            "print_width": "50%",
-            "width": "50%"
-        },
-        {
-            "allow_on_submit": 1,
-            "fieldname": "select_print_heading",
-            "fieldtype": "Link",
-            "label": "Print Heading",
-            "no_copy": 1,
-            "options": "Print Heading",
-            "print_hide": 1,
-            "report_hide": 1
-        },
-        {
-            "fieldname": "column_break_43",
-            "fieldtype": "Column Break"
-        },
-        {
-            "allow_on_submit": 1,
-            "fieldname": "letter_head",
-            "fieldtype": "Link",
-            "label": "Letter Head",
-            "options": "Letter Head",
-            "print_hide": 1
-        },
-        {
-            "default": "Qty",
-            "fieldname": "distribute_additional_costs_based_on",
-            "fieldtype": "Select",
-            "label": "Distribute Additional Costs Based On ",
-            "options": "Qty\nAmount"
-        },
-        {
-            "collapsible": 1,
-            "fieldname": "accounting_dimensions_section",
-            "fieldtype": "Section Break",
-            "label": "Accounting Dimensions"
-        },
-        {
-            "fieldname": "cost_center",
-            "fieldtype": "Link",
-            "label": "Cost Center",
-            "options": "Cost Center"
-        },
-        {
-            "fieldname": "dimension_col_break",
-            "fieldtype": "Column Break"
-        },
-        {
-            "fieldname": "project",
-            "fieldtype": "Link",
-            "label": "Project",
-            "options": "Project"
-        }
-    ],
-    "icon": "fa fa-file-text",
-    "is_submittable": 1,
-    "links": [],
-    "modified": "2022-08-15 14:08:49.204218",
-    "modified_by": "Administrator",
-    "module": "Subcontracting",
-    "name": "Subcontracting Order",
-    "naming_rule": "By \"Naming Series\" field",
-    "owner": "Administrator",
-    "permissions": [
-        {
-            "read": 1,
-            "report": 1,
-            "role": "Stock User"
-        },
-        {
-            "amend": 1,
-            "cancel": 1,
-            "create": 1,
-            "delete": 1,
-            "email": 1,
-            "print": 1,
-            "read": 1,
-            "report": 1,
-            "role": "Purchase Manager",
-            "share": 1,
-            "submit": 1,
-            "write": 1
-        },
-        {
-            "amend": 1,
-            "cancel": 1,
-            "create": 1,
-            "delete": 1,
-            "email": 1,
-            "print": 1,
-            "read": 1,
-            "report": 1,
-            "role": "Purchase User",
-            "share": 1,
-            "submit": 1,
-            "write": 1
-        },
-        {
-            "permlevel": 1,
-            "read": 1,
-            "role": "Purchase Manager",
-            "write": 1
-        }
-    ],
-    "search_fields": "status, transaction_date, supplier",
-    "show_name_in_global_search": 1,
-    "sort_field": "modified",
-    "sort_order": "DESC",
-    "states": [],
-    "timeline_field": "supplier",
-    "title_field": "supplier_name",
-    "track_changes": 1
+ "actions": [],
+ "allow_auto_repeat": 1,
+ "allow_import": 1,
+ "autoname": "naming_series:",
+ "creation": "2022-04-01 22:39:17.662819",
+ "doctype": "DocType",
+ "document_type": "Document",
+ "engine": "InnoDB",
+ "field_order": [
+  "title",
+  "naming_series",
+  "purchase_order",
+  "supplier",
+  "supplier_name",
+  "supplier_warehouse",
+  "column_break_7",
+  "company",
+  "transaction_date",
+  "schedule_date",
+  "amended_from",
+  "accounting_dimensions_section",
+  "cost_center",
+  "dimension_col_break",
+  "project",
+  "address_and_contact_section",
+  "supplier_address",
+  "address_display",
+  "contact_person",
+  "contact_display",
+  "contact_mobile",
+  "contact_email",
+  "column_break_19",
+  "shipping_address",
+  "shipping_address_display",
+  "billing_address",
+  "billing_address_display",
+  "section_break_24",
+  "column_break_25",
+  "set_warehouse",
+  "items",
+  "section_break_32",
+  "total_qty",
+  "column_break_29",
+  "total",
+  "service_items_section",
+  "service_items",
+  "raw_materials_supplied_section",
+  "set_reserve_warehouse",
+  "supplied_items",
+  "additional_costs_section",
+  "distribute_additional_costs_based_on",
+  "additional_costs",
+  "total_additional_costs",
+  "order_status_section",
+  "status",
+  "column_break_39",
+  "per_received",
+  "printing_settings_section",
+  "select_print_heading",
+  "column_break_43",
+  "letter_head"
+ ],
+ "fields": [
+  {
+   "allow_on_submit": 1,
+   "default": "{supplier_name}",
+   "fieldname": "title",
+   "fieldtype": "Data",
+   "hidden": 1,
+   "label": "Title",
+   "no_copy": 1,
+   "print_hide": 1
+  },
+  {
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "options": "SC-ORD-.YYYY.-",
+   "print_hide": 1,
+   "reqd": 1,
+   "set_only_once": 1
+  },
+  {
+   "fieldname": "purchase_order",
+   "fieldtype": "Link",
+   "label": "Subcontracting Purchase Order",
+   "options": "Purchase Order",
+   "reqd": 1
+  },
+  {
+   "bold": 1,
+   "fieldname": "supplier",
+   "fieldtype": "Link",
+   "in_global_search": 1,
+   "in_standard_filter": 1,
+   "label": "Supplier",
+   "options": "Supplier",
+   "print_hide": 1,
+   "reqd": 1,
+   "search_index": 1
+  },
+  {
+   "bold": 1,
+   "fetch_from": "supplier.supplier_name",
+   "fieldname": "supplier_name",
+   "fieldtype": "Data",
+   "in_global_search": 1,
+   "label": "Supplier Name",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "depends_on": "supplier",
+   "fieldname": "supplier_warehouse",
+   "fieldtype": "Link",
+   "label": "Supplier Warehouse",
+   "options": "Warehouse",
+   "reqd": 1
+  },
+  {
+   "fieldname": "column_break_7",
+   "fieldtype": "Column Break",
+   "print_width": "50%",
+   "width": "50%"
+  },
+  {
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "in_standard_filter": 1,
+   "label": "Company",
+   "options": "Company",
+   "print_hide": 1,
+   "remember_last_selected_value": 1,
+   "reqd": 1
+  },
+  {
+   "default": "Today",
+   "fetch_from": "purchase_order.transaction_date",
+   "fetch_if_empty": 1,
+   "fieldname": "transaction_date",
+   "fieldtype": "Date",
+   "in_list_view": 1,
+   "label": "Date",
+   "reqd": 1,
+   "search_index": 1
+  },
+  {
+   "allow_on_submit": 1,
+   "fetch_from": "purchase_order.schedule_date",
+   "fetch_if_empty": 1,
+   "fieldname": "schedule_date",
+   "fieldtype": "Date",
+   "label": "Required By",
+   "read_only": 1
+  },
+  {
+   "fieldname": "amended_from",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Amended From",
+   "no_copy": 1,
+   "options": "Subcontracting Order",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "fieldname": "address_and_contact_section",
+   "fieldtype": "Section Break",
+   "label": "Address and Contact"
+  },
+  {
+   "fetch_from": "supplier.supplier_primary_address",
+   "fetch_if_empty": 1,
+   "fieldname": "supplier_address",
+   "fieldtype": "Link",
+   "label": "Supplier Address",
+   "options": "Address",
+   "print_hide": 1
+  },
+  {
+   "fieldname": "address_display",
+   "fieldtype": "Small Text",
+   "label": "Supplier Address Details",
+   "read_only": 1
+  },
+  {
+   "fetch_from": "supplier.supplier_primary_contact",
+   "fetch_if_empty": 1,
+   "fieldname": "contact_person",
+   "fieldtype": "Link",
+   "label": "Supplier Contact",
+   "options": "Contact",
+   "print_hide": 1
+  },
+  {
+   "fieldname": "contact_display",
+   "fieldtype": "Small Text",
+   "in_global_search": 1,
+   "label": "Contact Name",
+   "read_only": 1
+  },
+  {
+   "fieldname": "contact_mobile",
+   "fieldtype": "Small Text",
+   "label": "Contact Mobile No",
+   "options": "Phone",
+   "read_only": 1
+  },
+  {
+   "fieldname": "contact_email",
+   "fieldtype": "Small Text",
+   "label": "Contact Email",
+   "options": "Email",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_19",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "shipping_address",
+   "fieldtype": "Link",
+   "label": "Company Shipping Address",
+   "options": "Address",
+   "print_hide": 1
+  },
+  {
+   "fieldname": "shipping_address_display",
+   "fieldtype": "Small Text",
+   "label": "Shipping Address Details",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "fieldname": "billing_address",
+   "fieldtype": "Link",
+   "label": "Company Billing Address",
+   "options": "Address"
+  },
+  {
+   "fieldname": "billing_address_display",
+   "fieldtype": "Small Text",
+   "label": "Billing Address Details",
+   "read_only": 1
+  },
+  {
+   "fieldname": "section_break_24",
+   "fieldtype": "Section Break"
+  },
+  {
+   "fieldname": "column_break_25",
+   "fieldtype": "Column Break"
+  },
+  {
+   "depends_on": "purchase_order",
+   "description": "Sets 'Warehouse' in each row of the Items table.",
+   "fieldname": "set_warehouse",
+   "fieldtype": "Link",
+   "label": "Set Target Warehouse",
+   "options": "Warehouse",
+   "print_hide": 1
+  },
+  {
+   "allow_bulk_edit": 1,
+   "depends_on": "purchase_order",
+   "fieldname": "items",
+   "fieldtype": "Table",
+   "label": "Items",
+   "options": "Subcontracting Order Item",
+   "reqd": 1
+  },
+  {
+   "fieldname": "section_break_32",
+   "fieldtype": "Section Break"
+  },
+  {
+   "depends_on": "purchase_order",
+   "fieldname": "total_qty",
+   "fieldtype": "Float",
+   "label": "Total Quantity",
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_29",
+   "fieldtype": "Column Break"
+  },
+  {
+   "depends_on": "purchase_order",
+   "fieldname": "total",
+   "fieldtype": "Currency",
+   "label": "Total",
+   "options": "currency",
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "depends_on": "purchase_order",
+   "fieldname": "service_items_section",
+   "fieldtype": "Section Break",
+   "label": "Service Items"
+  },
+  {
+   "fieldname": "service_items",
+   "fieldtype": "Table",
+   "label": "Service Items",
+   "options": "Subcontracting Order Service Item",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "collapsible": 1,
+   "collapsible_depends_on": "supplied_items",
+   "depends_on": "supplied_items",
+   "fieldname": "raw_materials_supplied_section",
+   "fieldtype": "Section Break",
+   "label": "Raw Materials Supplied"
+  },
+  {
+   "depends_on": "supplied_items",
+   "description": "Sets 'Reserve Warehouse' in each row of the Supplied Items table.",
+   "fieldname": "set_reserve_warehouse",
+   "fieldtype": "Link",
+   "label": "Set Reserve Warehouse",
+   "options": "Warehouse"
+  },
+  {
+   "fieldname": "supplied_items",
+   "fieldtype": "Table",
+   "label": "Supplied Items",
+   "no_copy": 1,
+   "options": "Subcontracting Order Supplied Item",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "collapsible_depends_on": "total_additional_costs",
+   "depends_on": "eval:(doc.docstatus == 0 || doc.total_additional_costs)",
+   "fieldname": "additional_costs_section",
+   "fieldtype": "Section Break",
+   "label": "Additional Costs"
+  },
+  {
+   "fieldname": "additional_costs",
+   "fieldtype": "Table",
+   "label": "Additional Costs",
+   "options": "Landed Cost Taxes and Charges"
+  },
+  {
+   "fieldname": "total_additional_costs",
+   "fieldtype": "Currency",
+   "label": "Total Additional Costs",
+   "print_hide_if_no_value": 1,
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "fieldname": "order_status_section",
+   "fieldtype": "Section Break",
+   "label": "Order Status"
+  },
+  {
+   "default": "Draft",
+   "fieldname": "status",
+   "fieldtype": "Select",
+   "in_standard_filter": 1,
+   "label": "Status",
+   "no_copy": 1,
+   "options": "Draft\nOpen\nPartially Received\nCompleted\nMaterial Transferred\nPartial Material Transferred\nCancelled",
+   "print_hide": 1,
+   "read_only": 1,
+   "reqd": 1,
+   "search_index": 1
+  },
+  {
+   "fieldname": "column_break_39",
+   "fieldtype": "Column Break"
+  },
+  {
+   "depends_on": "eval:!doc.__islocal",
+   "fieldname": "per_received",
+   "fieldtype": "Percent",
+   "in_list_view": 1,
+   "label": "% Received",
+   "no_copy": 1,
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "fieldname": "printing_settings_section",
+   "fieldtype": "Section Break",
+   "label": "Printing Settings",
+   "print_hide": 1,
+   "print_width": "50%",
+   "width": "50%"
+  },
+  {
+   "allow_on_submit": 1,
+   "fieldname": "select_print_heading",
+   "fieldtype": "Link",
+   "label": "Print Heading",
+   "no_copy": 1,
+   "options": "Print Heading",
+   "print_hide": 1,
+   "report_hide": 1
+  },
+  {
+   "fieldname": "column_break_43",
+   "fieldtype": "Column Break"
+  },
+  {
+   "allow_on_submit": 1,
+   "fieldname": "letter_head",
+   "fieldtype": "Link",
+   "label": "Letter Head",
+   "options": "Letter Head",
+   "print_hide": 1
+  },
+  {
+   "default": "Qty",
+   "fieldname": "distribute_additional_costs_based_on",
+   "fieldtype": "Select",
+   "label": "Distribute Additional Costs Based On ",
+   "options": "Qty\nAmount"
+  },
+  {
+   "collapsible": 1,
+   "fieldname": "accounting_dimensions_section",
+   "fieldtype": "Section Break",
+   "label": "Accounting Dimensions"
+  },
+  {
+   "fieldname": "cost_center",
+   "fieldtype": "Link",
+   "label": "Cost Center",
+   "options": "Cost Center"
+  },
+  {
+   "fieldname": "dimension_col_break",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "project",
+   "fieldtype": "Link",
+   "label": "Project",
+   "options": "Project"
+  }
+ ],
+ "icon": "fa fa-file-text",
+ "is_submittable": 1,
+ "links": [],
+ "modified": "2023-06-03 16:18:17.782538",
+ "modified_by": "Administrator",
+ "module": "Subcontracting",
+ "name": "Subcontracting Order",
+ "naming_rule": "By \"Naming Series\" field",
+ "owner": "Administrator",
+ "permissions": [
+  {
+   "read": 1,
+   "report": 1,
+   "role": "Stock User"
+  },
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Purchase Manager",
+   "share": 1,
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Purchase User",
+   "share": 1,
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "permlevel": 1,
+   "read": 1,
+   "role": "Purchase Manager",
+   "write": 1
+  }
+ ],
+ "search_fields": "status, transaction_date, supplier",
+ "show_name_in_global_search": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": [],
+ "timeline_field": "supplier",
+ "title_field": "supplier_name",
+ "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js
index 78572a6..5ee1f7b 100644
--- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js
+++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js
@@ -77,6 +77,28 @@
 			}
 		});
 
+		frm.set_query("serial_and_batch_bundle", "supplied_items", (doc, cdt, cdn) => {
+			let row = locals[cdt][cdn];
+			return {
+				filters: {
+					'item_code': row.rm_item_code,
+					'voucher_type': doc.doctype,
+					'voucher_no': ["in", [doc.name, ""]],
+					'is_cancelled': 0,
+				}
+			}
+		});
+
+		let sbb_field = frm.get_docfield('supplied_items', 'serial_and_batch_bundle');
+		if (sbb_field) {
+			sbb_field.get_route_options_for_new_doc = (row) => {
+				return {
+					'item_code': row.doc.rm_item_code,
+					'voucher_type': frm.doc.doctype,
+				}
+			};
+		}
+
 		let batch_no_field = frm.get_docfield('items', 'batch_no');
 		if (batch_no_field) {
 			batch_no_field.get_route_options_for_new_doc = function(row) {
diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
index 3385eac..9dee3aa 100644
--- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
+++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
@@ -205,6 +205,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Small Text",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -629,7 +630,7 @@
  "in_create": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2022-11-16 14:18:57.001239",
+ "modified": "2023-06-03 16:18:39.088518",
  "modified_by": "Administrator",
  "module": "Subcontracting",
  "name": "Subcontracting Receipt",
diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py
index a440124..b30b699 100644
--- a/erpnext/support/doctype/issue/test_issue.py
+++ b/erpnext/support/doctype/issue/test_issue.py
@@ -20,7 +20,7 @@
 		frappe.db.sql("delete from `tabSLA Fulfilled On Status`")
 		frappe.db.sql("delete from `tabPause SLA On Status`")
 		frappe.db.sql("delete from `tabService Day`")
-		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
+		frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
 		create_service_level_agreements_for_issues()
 
 
diff --git a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
index 472f6bc..1f8f4a2 100644
--- a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py
@@ -16,7 +16,7 @@
 class TestServiceLevelAgreement(unittest.TestCase):
 	def setUp(self):
 		self.create_company()
-		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
+		frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
 		lead = frappe.qb.DocType("Lead")
 		frappe.qb.from_(lead).delete().where(lead.company == self.company).run()
 
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.json b/erpnext/support/doctype/warranty_claim/warranty_claim.json
index 45485ca..01d9b01 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.json
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.json
@@ -1,9 +1,11 @@
 {
+ "actions": [],
  "allow_import": 1,
  "autoname": "naming_series:",
  "creation": "2013-01-10 16:34:30",
  "doctype": "DocType",
  "document_type": "Setup",
+ "engine": "InnoDB",
  "field_order": [
   "naming_series",
   "status",
@@ -249,6 +251,7 @@
    "fieldname": "contact_mobile",
    "fieldtype": "Data",
    "label": "Mobile No",
+   "options": "Phone",
    "read_only": 1
   },
   {
@@ -362,10 +365,12 @@
  ],
  "icon": "fa fa-bug",
  "idx": 1,
- "modified": "2021-11-09 17:26:09.703215",
+ "links": [],
+ "modified": "2023-06-03 16:17:07.694449",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Warranty Claim",
+ "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
   {
@@ -384,6 +389,7 @@
  "show_name_in_global_search": 1,
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "timeline_field": "customer",
  "title_field": "customer_name"
-}
+}
\ No newline at end of file
diff --git a/erpnext/support/report/issue_analytics/test_issue_analytics.py b/erpnext/support/report/issue_analytics/test_issue_analytics.py
index 169392e..e30b31b 100644
--- a/erpnext/support/report/issue_analytics/test_issue_analytics.py
+++ b/erpnext/support/report/issue_analytics/test_issue_analytics.py
@@ -17,7 +17,7 @@
 	@classmethod
 	def setUpClass(self):
 		frappe.db.sql("delete from `tabIssue` where company='_Test Company'")
-		frappe.db.set_value("Support Settings", None, "track_service_level_agreement", 1)
+		frappe.db.set_single_value("Support Settings", "track_service_level_agreement", 1)
 
 		current_month_date = getdate()
 		last_month_date = add_months(current_month_date, -1)
diff --git a/erpnext/templates/generators/item/item_configure.js b/erpnext/templates/generators/item/item_configure.js
index 613c967..9beba3f 100644
--- a/erpnext/templates/generators/item/item_configure.js
+++ b/erpnext/templates/generators/item/item_configure.js
@@ -219,7 +219,8 @@
 						: ''
 					}
 
-					${available_qty === 0 ? '<span class="text-danger">(' + __('Out of Stock') + ')</span>' : ''}
+					${available_qty === 0 && product_info && product_info?.is_stock_item
+						? '<span class="text-danger">(' + __('Out of Stock') + ')</span>' : ''}
 
 				</div></div>
 				<a href data-action="btn_clear_values" data-item-code="${one_item}">
@@ -236,7 +237,8 @@
 			</div>`;
 		/* eslint-disable indent */
 
-		if (!product_info?.allow_items_not_in_stock && available_qty === 0) {
+		if (!product_info?.allow_items_not_in_stock && available_qty === 0
+			&& product_info && product_info?.is_stock_item) {
 			item_add_to_cart = '';
 		}
 
diff --git a/erpnext/tests/test_exotel.py b/erpnext/tests/test_exotel.py
index f5cca72..9b91414 100644
--- a/erpnext/tests/test_exotel.py
+++ b/erpnext/tests/test_exotel.py
@@ -12,7 +12,7 @@
 		cls.test_employee_name = make_employee(
 			user="test_employee_exotel@company.com", cell_number="9999999999"
 		)
-		frappe.db.set_value("Exotel Settings", "Exotel Settings", "enabled", 1)
+		frappe.db.set_single_value("Exotel Settings", "enabled", 1)
 		phones = [{"phone": "+91 9999999991", "is_primary_phone": 0, "is_primary_mobile_no": 1}]
 		create_contact(name="Test Contact", salutation="Mr", phones=phones)
 		frappe.db.commit()
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index 35037fb..bede718 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -115,7 +115,7 @@
 Add Employees,Ajouter des employés,
 Add Item,Ajouter un Article,
 Add Items,Ajouter des articles,
-Add Leads,Créer des Prospects,
+Add Leads,Créer des Leads,
 Add Multiple Tasks,Ajouter plusieurs tâches,
 Add Row,Ajouter une Ligne,
 Add Sales Partners,Ajouter des partenaires commerciaux,
@@ -658,8 +658,8 @@
 Create Invoices,Créer des factures,
 Create Job Card,Créer une carte de travail,
 Create Journal Entry,Créer une entrée de journal,
-Create Lead,Créer un Prospect,
-Create Leads,Créer des Prospects,
+Create Lead,Créer un Lead,
+Create Leads,Créer des Lead,
 Create Maintenance Visit,Créer une visite de maintenance,
 Create Material Request,Créer une demande de matériel,
 Create Multiple,Créer plusieurs,
@@ -1426,13 +1426,12 @@
 Last Purchase Rate,Dernier Prix d'Achat,
 Latest,Dernier,
 Latest price updated in all BOMs,Prix les plus récents mis à jour dans toutes les nomenclatures,
-Lead,Prospect,
-Lead Count,Nombre de Prospects,
+Lead Count,Nombre de Lead,
 Lead Owner,Responsable du Prospect,
-Lead Owner cannot be same as the Lead,Le Responsable du Prospect ne peut pas être identique au Prospect,
+Lead Owner cannot be same as the Lead,Le Responsable du Prospect ne peut pas être identique au Lead,
 Lead Time Days,Jours de Délai,
 Lead to Quotation,Du Prospect au Devis,
-"Leads help you get business, add all your contacts and more as your leads","Les prospects vous aident à obtenir des contrats, ajoutez tous vos contacts et plus dans votre liste de prospects",
+"Leads help you get business, add all your contacts and more as your leads","Les lead vous aident à obtenir des contrats, ajoutez tous vos contacts et plus dans votre liste de lead",
 Learn,Apprendre,
 Leave Approval Notification,Notification d'approbation de congés,
 Leave Blocked,Laisser Verrouillé,
@@ -1596,7 +1595,7 @@
 Middle Name (Optional),Deuxième Prénom (Optionnel),
 Min Amt can not be greater than Max Amt,Min Amt ne peut pas être supérieur à Max Amt,
 Min Qty can not be greater than Max Qty,Qté Min ne peut pas être supérieure à Qté Max,
-Minimum Lead Age (Days),Âge Minimum du Prospect (Jours),
+Minimum Lead Age (Days),Âge Minimum du lead (Jours),
 Miscellaneous Expenses,Charges Diverses,
 Missing Currency Exchange Rates for {0},Taux de Change Manquant pour {0},
 Missing email template for dispatch. Please set one in Delivery Settings.,Modèle de courrier électronique manquant pour l'envoi. Veuillez en définir un dans les paramètres de livraison.,
@@ -1676,7 +1675,7 @@
 Newsletters,Newsletters,
 Newspaper Publishers,Éditeurs de journaux,
 Next,Suivant,
-Next Contact By cannot be same as the Lead Email Address,Prochain Contact Par ne peut être identique à l’Adresse Email du Prospect,
+Next Contact By cannot be same as the Lead Email Address,Prochain Contact Par ne peut être identique à l’Adresse Email du Lead,
 Next Contact Date cannot be in the past,La Date de Prochain Contact ne peut pas être dans le passé,
 Next Steps,Prochaines étapes,
 No Action,Pas d'action,
@@ -1808,9 +1807,9 @@
 Operations,Opérations,
 Operations cannot be left blank,Les opérations ne peuvent pas être laissées vides,
 Opp Count,Compte d'Opportunités,
-Opp/Lead %,Opp / Prospect %,
+Opp/Lead %,Opp / Lead %,
 Opportunities,Opportunités,
-Opportunities by lead source,Opportunités par source de plomb,
+Opportunities by lead source,Opportunités par source de lead,
 Opportunity,Opportunité,
 Opportunity Amount,Montant de l'opportunité,
 Optional Holiday List not set for leave period {0},Une liste de vacances facultative n'est pas définie pour la période de congé {0},
@@ -2007,7 +2006,7 @@
 Please mention Round Off Account in Company,Veuillez indiquer le Compte d’Arrondi de la Société,
 Please mention Round Off Cost Center in Company,Veuillez indiquer le Centre de Coûts d’Arrondi de la Société,
 Please mention no of visits required,Veuillez indiquer le nb de visites requises,
-Please mention the Lead Name in Lead {0},Veuillez mentionner le nom du Prospect dans le Prospect {0},
+Please mention the Lead Name in Lead {0},Veuillez mentionner le nom du Lead dans le Lead {0},
 Please pull items from Delivery Note,Veuillez récupérer les articles des Bons de Livraison,
 Please register the SIREN number in the company information file,Veuillez enregistrer le numéro SIREN dans la fiche d'information de la société,
 Please remove this Invoice {0} from C-Form {1},Veuillez retirez cette Facture {0} du C-Form {1},
@@ -2277,7 +2276,7 @@
 Queued for updating latest price in all Bill of Materials. It may take a few minutes.,Mise à jour des prix les plus récents dans toutes les nomenclatures en file d'attente. Cela peut prendre quelques minutes.,
 Quick Journal Entry,Écriture Rapide dans le Journal,
 Quot Count,Compte de Devis,
-Quot/Lead %,Devis / Prospects %,
+Quot/Lead %,Devis / Lead %,
 Quotation,Devis,
 Quotation {0} is cancelled,Devis {0} est annulée,
 Quotation {0} not of type {1},Le devis {0} n'est pas du type {1},
@@ -2285,7 +2284,7 @@
 "Quotations are proposals, bids you have sent to your customers","Les devis sont des propositions, offres que vous avez envoyées à vos clients",
 Quotations received from Suppliers.,Devis reçus des Fournisseurs.,
 Quotations: ,Devis :,
-Quotes to Leads or Customers.,Devis de Prospects ou Clients.,
+Quotes to Leads or Customers.,Devis de Lead ou Clients.,
 RFQs are not allowed for {0} due to a scorecard standing of {1},Les Appels d'Offres ne sont pas autorisés pour {0} en raison d'une note de {1} sur la fiche d'évaluation,
 Range,Plage,
 Rate,Prix,
@@ -3122,7 +3121,7 @@
 Total(Qty),Total (Qté),
 Traceability,Traçabilité,
 Traceback,Retraçage,
-Track Leads by Lead Source.,Suivre les prospects par sources,
+Track Leads by Lead Source.,Suivre les leads par sources,
 Training,Formation,
 Training Event,Événement de formation,
 Training Events,Événements de formation,
@@ -3243,8 +3242,8 @@
 View Fees Records,Voir les honoraires,
 View Form,Voir le formulaire,
 View Lab Tests,Afficher les tests de laboratoire,
-View Leads,Voir Prospects,
-View Ledger,Voir le Livre,
+View Leads,Voir Lead,
+View Ledger,Voir le Journal,
 View Now,Voir maintenant,
 View a list of all the help videos,Afficher la liste de toutes les vidéos d'aide,
 View in Cart,Voir Panier,
@@ -3677,7 +3676,7 @@
 Country,Pays,
 Country Code in File does not match with country code set up in the system,Le code de pays dans le fichier ne correspond pas au code de pays configuré dans le système,
 Create New Contact,Créer un nouveau contact,
-Create New Lead,Créer une nouvelle piste,
+Create New Lead,Créer une nouvelle lead,
 Create Pick List,Créer une liste de choix,
 Create Quality Inspection for Item {0},Créer un contrôle qualité pour l'article {0},
 Creating Accounts...,Création de comptes ...,
@@ -3784,7 +3783,7 @@
 Help,Aidez-moi,
 Help Article,Article d’Aide,
 "Helps you keep tracks of Contracts based on Supplier, Customer and Employee","Vous aide à garder une trace des contrats en fonction du fournisseur, client et employé",
-Helps you manage appointments with your leads,Vous aide à gérer les rendez-vous avec vos prospects,
+Helps you manage appointments with your leads,Vous aide à gérer les rendez-vous avec vos leads,
 Home,Accueil,
 IBAN is not valid,IBAN n'est pas valide,
 Import Data from CSV / Excel files.,Importer des données à partir de fichiers CSV / Excel,
@@ -3880,7 +3879,7 @@
 Only users with the {0} role can create backdated leave applications,Seuls les utilisateurs avec le rôle {0} peuvent créer des demandes de congé antidatées,
 Open,Ouvert,
 Open Contact,Contact ouvert,
-Open Lead,Ouvrir le Prospect,
+Open Lead,Ouvrir le Lead,
 Opening and Closing,Ouverture et fermeture,
 Operating Cost as per Work Order / BOM,Coût d'exploitation selon l'ordre de fabrication / nomenclature,
 Order Amount,Montant de la commande,
@@ -3926,7 +3925,7 @@
 Please select the customer.,S'il vous plaît sélectionner le client.,
 Please set a Supplier against the Items to be considered in the Purchase Order.,Veuillez définir un fournisseur par rapport aux articles à prendre en compte dans la Commande d'Achat.,
 Please set account heads in GST Settings for Compnay {0},Définissez les en-têtes de compte dans les paramètres de la TPS pour le service {0}.,
-Please set an email id for the Lead {0},Veuillez définir un identifiant de messagerie pour le prospect {0}.,
+Please set an email id for the Lead {0},Veuillez définir un identifiant de messagerie pour le lead {0}.,
 Please set default UOM in Stock Settings,Veuillez définir l'UdM par défaut dans les paramètres de stock,
 Please set filter based on Item or Warehouse due to a large amount of entries.,Veuillez définir le filtre en fonction de l'article ou de l'entrepôt en raison d'une grande quantité d'entrées.,
 Please set up the Campaign Schedule in the Campaign {0},Configurez le calendrier de la campagne dans la campagne {0}.,
@@ -5600,7 +5599,7 @@
 Received By,Reçu par,
 Caller Information,Informations sur l'appelant,
 Contact Name,Nom du Contact,
-Lead Name,Nom du Prospect,
+Lead Name,Nom du Lead,
 Ringing,Sonnerie,
 Missed,Manqué,
 Call Duration in seconds,Durée d'appel en secondes,
@@ -5668,7 +5667,7 @@
 Contract Template Fulfilment Terms,Conditions d'exécution du modèle de contrat,
 Email Campaign,Campagne Email,
 Email Campaign For ,Campagne d'email pour,
-Lead is an Organization,Le prospect est une organisation,
+Lead is an Organization,Le Lead est une organisation,
 CRM-LEAD-.YYYY.-,CRM-LEAD-.YYYY.-,
 Person Name,Nom de la Personne,
 Lost Quotation,Devis Perdu,
@@ -5683,7 +5682,7 @@
 Ends On,Se termine le,
 Address & Contact,Adresse &amp; Contact,
 Mobile No.,N° Mobile.,
-Lead Type,Type de Prospect,
+Lead Type,Type de Lead,
 Channel Partner,Partenaire de Canal,
 Consultant,Consultant,
 Market Segment,Part de Marché,
@@ -5706,7 +5705,7 @@
 Potential Sales Deal,Ventes Potentielles,
 CRM-OPP-.YYYY.-,CRM-OPP-YYYY.-,
 Opportunity From,Opportunité De,
-Customer / Lead Name,Nom du Client / Prospect,
+Customer / Lead Name,Nom du Client / Lead,
 Opportunity Type,Type d'Opportunité,
 Converted By,Converti par,
 Sales Stage,Stade de vente,
@@ -5716,7 +5715,7 @@
 With Items,Avec Articles,
 Probability (%),Probabilité (%),
 Contact Info,Information du Contact,
-Customer / Lead Address,Adresse du Client / Prospect,
+Customer / Lead Address,Adresse du Lead / Prospect,
 Contact Mobile No,N° de Portable du Contact,
 Enter name of campaign if source of enquiry is campaign,Entrez le nom de la campagne si la source de l'enquête est une campagne,
 Opportunity Date,Date d'Opportunité,
@@ -7643,7 +7642,7 @@
 Buyer of Goods and Services.,Acheteur des Biens et Services.,
 CUST-.YYYY.-,CUST-.YYYY.-,
 Default Company Bank Account,Compte bancaire d'entreprise par défaut,
-From Lead,Du Prospect,
+From Lead,Du Lead,
 Account Manager,Gestionnaire de compte,
 Allow Sales Invoice Creation Without Sales Order,Autoriser la création de factures de vente sans commande client,
 Allow Sales Invoice Creation Without Delivery Note,Autoriser la création de factures de vente sans bon de livraison,
@@ -7670,7 +7669,7 @@
 Installation Time,Temps d'Installation,
 Installation Note Item,Article Remarque d'Installation,
 Installed Qty,Qté Installée,
-Lead Source,Source du Prospect,
+Lead Source,Source du Lead,
 Period Start Date,Date de début de la période,
 Period End Date,Date de fin de la période,
 Cashier,Caissier,
@@ -8515,8 +8514,8 @@
 Items To Be Requested,Articles À Demander,
 Reserved,Réservé,
 Itemwise Recommended Reorder Level,Renouvellement Recommandé par Article,
-Lead Details,Détails du Prospect,
-Lead Owner Efficiency,Efficacité des Responsables des Prospects,
+Lead Details,Détails du Lead,
+Lead Owner Efficiency,Efficacité des Responsables des Leads,
 Loan Repayment and Closure,Remboursement et clôture de prêts,
 Loan Security Status,État de la sécurité du prêt,
 Lost Opportunity,Occasion perdue,
@@ -9205,7 +9204,7 @@
 From Posting Date,À partir de la date de publication,
 To Posting Date,À la date de publication,
 No records found,Aucun enregistrement trouvé,
-Customer/Lead Name,Nom du client / prospect,
+Customer/Lead Name,Nom du client / lead,
 Unmarked Days,Jours non marqués,
 Jan,Jan,
 Feb,fév,
@@ -9469,7 +9468,7 @@
 Row #{0}: Child Item should not be a Product Bundle. Please remove Item {1} and Save,Ligne n ° {0}: l'élément enfant ne doit pas être un ensemble de produits. Veuillez supprimer l'élément {1} et enregistrer,
 Credit limit reached for customer {0},Limite de crédit atteinte pour le client {0},
 Could not auto create Customer due to the following missing mandatory field(s):,Impossible de créer automatiquement le client en raison du ou des champs obligatoires manquants suivants:,
-Please create Customer from Lead {0}.,Veuillez créer un client à partir du prospect {0}.,
+Please create Customer from Lead {0}.,Veuillez créer un client à partir du lead {0}.,
 Mandatory Missing,Obligatoire manquant,
 Please set Payroll based on in Payroll settings,Veuillez définir la paie en fonction des paramètres de paie,
 Additional Salary: {0} already exist for Salary Component: {1} for period {2} and {3},Salaire supplémentaire: {0} existe déjà pour le composant de salaire: {1} pour la période {2} et {3},
diff --git a/erpnext/utilities/hierarchy_chart.py b/erpnext/utilities/hierarchy_chart.py
deleted file mode 100644
index 4bf4353..0000000
--- a/erpnext/utilities/hierarchy_chart.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
-# MIT License. See license.txt
-
-
-import frappe
-from frappe import _
-
-
-@frappe.whitelist()
-def get_all_nodes(method, company):
-	"""Recursively gets all data from nodes"""
-	method = frappe.get_attr(method)
-
-	if method not in frappe.whitelisted:
-		frappe.throw(_("Not Permitted"), frappe.PermissionError)
-
-	root_nodes = method(company=company)
-	result = []
-	nodes_to_expand = []
-
-	for root in root_nodes:
-		data = method(root.id, company)
-		result.append(dict(parent=root.id, parent_name=root.name, data=data))
-		nodes_to_expand.extend(
-			[{"id": d.get("id"), "name": d.get("name")} for d in data if d.get("expandable")]
-		)
-
-	while nodes_to_expand:
-		parent = nodes_to_expand.pop(0)
-		data = method(parent.get("id"), company)
-		result.append(dict(parent=parent.get("id"), parent_name=parent.get("name"), data=data))
-		for d in data:
-			if d.get("expandable"):
-				nodes_to_expand.append({"id": d.get("id"), "name": d.get("name")})
-
-	return result
diff --git a/package.json b/package.json
index 6c11e9d..4e686f7 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,6 @@
   },
   "devDependencies": {},
   "dependencies": {
-    "html2canvas": "^1.1.4",
     "onscan.js": "^1.5.2"
   }
 }
diff --git a/pyproject.toml b/pyproject.toml
index 0718e5b..012ffb1 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,9 +9,10 @@
 dynamic = ["version"]
 dependencies = [
     # Core dependencies
-    "pycountry~=20.7.3",
-    "Unidecode~=1.2.0",
+    "pycountry~=22.3.5",
+    "Unidecode~=1.3.6",
     "barcodenumber~=0.5.0",
+    "rapidfuzz~=2.15.0",
 
     # integration dependencies
     "gocardless-pro~=1.22.0",
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 29fa1c7..0000000
--- a/setup.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# TODO: Remove this file when  v15.0.0 is released
-from setuptools import setup
-
-name = "erpnext"
-
-setup()
diff --git a/yarn.lock b/yarn.lock
index 8e5d1bd..fa1b1d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,25 +2,6 @@
 # yarn lockfile v1
 
 
-base64-arraybuffer@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz#4b944fac0191aa5907afe2d8c999ccc57ce80f45"
-  integrity sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==
-
-css-line-break@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-1.1.1.tgz#d5e9bdd297840099eb0503c7310fd34927a026ef"
-  integrity sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==
-  dependencies:
-    base64-arraybuffer "^0.2.0"
-
-html2canvas@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.1.4.tgz#53ae91cd26e9e9e623c56533cccb2e3f57c8124c"
-  integrity sha512-uHgQDwrXsRmFdnlOVFvHin9R7mdjjZvoBoXxicPR+NnucngkaLa5zIDW9fzMkiip0jSffyTyWedE8iVogYOeWg==
-  dependencies:
-    css-line-break "1.1.1"
-
 onscan.js@^1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/onscan.js/-/onscan.js-1.5.2.tgz#14ed636e5f4c3f0a78bacbf9a505dad3140ee341"