<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:nomina="http://www.sat.gob.mx/nomina" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sat.gob.mx/nomina" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="Nomina">
		<xs:annotation>
			<xs:documentation>Complemento al Comprobante Fiscal Digital a través de Internet (CFDI) para el manejo de datos de Nómina.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Percepciones" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Nodo opcional para expresar las percepciones aplicables</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Percepcion" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Nodo para expresar la información detallada de una percepción</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="TipoPercepcion" use="required">
										<xs:annotation>
											<xs:documentation>Clave agrupadora. Clasifica la percepción conforme al catálogo publicado en el portal del SAT en internet</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:int">
												<xs:minInclusive value="1"/>
												<xs:pattern value="[0-9]{3}"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="Clave" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido, representa la clave de percepción de nómina propia de la contabilidad de cada patrón, puede conformarse desde 3 hasta 15 caracteres</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:minLength value="3"/>
												<xs:maxLength value="15"/>
												<xs:whiteSpace value="collapse"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="Concepto" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido para la descripción del concepto de percepción</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:minLength value="1"/>
												<xs:maxLength value="100"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="ImporteGravado" type="nomina:t_Importe" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido, representa el importe gravado de un concepto de percepción</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="ImporteExento" type="nomina:t_Importe" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido, representa el importe exento de un concepto de percepción</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="TotalGravado" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Atributo requerido para expresar el total de percepciones gravadas que se relacionan en el comprobante</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="TotalExento" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Atributo requerido para expresar el total de percepciones exentas que se relacionan en el comprobante</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="Deducciones" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Nodo opcional para expresar las deducciones aplicables</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Deduccion" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Nodo para expresar la información detallada de una deducción</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="TipoDeduccion" use="required">
										<xs:annotation>
											<xs:documentation>Clave agrupadora. Clasifica la deducción conforme al catálogo publicado en el portal del SAT en internet</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:int">
												<xs:minInclusive value="1"/>
												<xs:pattern value="[0-9]{3}"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="Clave" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido para la clave de deducción de nómina propia de la contabilidad de cada patrón, puede conformarse desde 3 hasta 15 caracteres</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:minLength value="3"/>
												<xs:maxLength value="15"/>
												<xs:whiteSpace value="collapse"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="Concepto" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido para la descripción del concepto de deducción</xs:documentation>
										</xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:minLength value="1"/>
												<xs:maxLength value="100"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="ImporteGravado" type="nomina:t_Importe" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido, representa el importe gravado de un concepto de deducción</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="ImporteExento" type="nomina:t_Importe" use="required">
										<xs:annotation>
											<xs:documentation>Atributo requerido, representa el importe exento de un concepto de deducción</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="TotalGravado" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Atributo requerido para expresar el total de deducciones gravadas que se relacionan en el comprobante</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="TotalExento" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Atributo requerido para expresar el total de deducciones exentas que se relacionan en el comprobante</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="Incapacidad" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Nodo opcional para expresar información de las incapacidades</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="DiasIncapacidad" use="required">
							<xs:annotation>
								<xs:documentation>Número de días que el trabajador se incapacitó en el periodo</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:decimal">
									<xs:fractionDigits value="6"/>
                  <xs:minInclusive value="1"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="TipoIncapacidad" type="xs:int" use="required">
							<xs:annotation>
								<xs:documentation>Razón de la incapacidad: Catálogo publicado en el portal del SAT en internet</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="Descuento" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Monto del descuento por la incapacidad</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="HorasExtra" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Nodo opcional para expresar información de las horas extras</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="Dias" type="xs:int" use="required">
							<xs:annotation>
								<xs:documentation>Número de días en que el trabajador realizó horas extra en el periodo</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="TipoHoras" use="required">
							<xs:annotation>
								<xs:documentation>Tipo de pago de las horas extra: dobles o triples</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:whiteSpace value="collapse"/>
									<xs:enumeration value="Dobles"/>
									<xs:enumeration value="Triples"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="HorasExtra" type="xs:int" use="required">
							<xs:annotation>
								<xs:documentation>Número de horas extra trabajadas en el periodo</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="ImportePagado" type="nomina:t_Importe" use="required">
							<xs:annotation>
								<xs:documentation>Importe pagado por las horas extra</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="Version" type="xs:string" use="required" fixed="1.1">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la versión del complemento</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="RegistroPatronal" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para expresar el registro patronal a 20 posiciones máximo</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="20"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="NumEmpleado" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para expresar el número de empleado de 1 a 15 posiciones</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="15"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="CURP" type="nomina:t_CURP" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la CURP del trabajador</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="TipoRegimen" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la clave del régimen por el cual se tiene contratado al trabajador, conforme al catálogo publicado en el portal del SAT en internet</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:int">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="NumSeguridadSocial" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión del número de seguridad social aplicable al trabajador</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="15"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="FechaPago" type="xs:date" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la fecha efectiva de erogación del gasto. Se expresa en la forma aaaa-mm-dd, de acuerdo con la especificación ISO 8601.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="FechaInicialPago" type="xs:date" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la fecha inicial del pago. Se expresa en la forma aaaa-mm-dd, de acuerdo con la especificación ISO 8601.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="FechaFinalPago" type="xs:date" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión de la fecha final del pago. Se expresa en la forma aaaa-mm-dd, de acuerdo con la especificación ISO 8601.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="NumDiasPagados" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para la expresión del número de días pagados</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:decimal">
						<xs:fractionDigits value="6"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="Departamento">
				<xs:annotation>
					<xs:documentation>Atributo opcional para la expresión del departamento o área a la que pertenece el trabajador</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="100"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="CLABE">
				<xs:annotation>
					<xs:documentation>Atributo opcional para la expresión de la CLABE </xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="nomina:t_Clabe"/>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="Banco">
				<xs:annotation>
					<xs:documentation>Atributo opcional para la expresión del Banco conforme al catálogo, donde se realiza un depósito de nómina</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:int">
						<xs:minInclusive value="1"/>
						<xs:pattern value="[0-9]{3}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="FechaInicioRelLaboral" type="xs:date" use="required">
				<xs:annotation>
					<xs:documentation>Atributo requerido para expresar la fecha de inicio de la relación laboral entre el empleador y el empleado</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Antiguedad" type="xs:int" use="required">
				<xs:annotation>
					<xs:documentation>Número de semanas que el empleado ha mantenido relación laboral con el empleador</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="Puesto" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Puesto asignado al empleado o actividad que realiza</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="TipoContrato" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Tipo de contrato que tiene el trabajador: Base, Eventual, Confianza, Sindicalizado, a prueba, etc.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="TipoJornada" type="xs:string" use="required">
				<xs:annotation>
					<xs:documentation>Tipo de jornada que cubre el trabajador: Diurna, nocturna, mixta, por hora, reducida, continuada, partida, por turnos, etc.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="PeriodicidadPago" use="required">
				<xs:annotation>
					<xs:documentation>Forma en que se establece el pago del salario: diario, semanal, quincenal, catorcenal mensual, bimestral, unidad de obra, comisión, precio alzado, etc.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="100"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="SalarioBaseCotApor" type="nomina:t_Importe" use="required">
				<xs:annotation>
					<xs:documentation>Retribución otorgada al trabajador, que se integra por los pagos hechos en efectivo por cuota diaria, gratificaciones, percepciones, alimentación, habitación, primas, comisiones, prestaciones en especie y cualquiera otra cantidad o prestación que se entregue al trabajador por su trabajo</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="RiesgoPuesto" use="required">
				<xs:annotation>
					<xs:documentation>Clave conforme a la Clase en que deben inscribirse los patrones, de acuerdo a las actividades que desempeñan sus trabajadores, según lo previsto en el artículo 196 del Reglamento en Materia de Afiliación Clasificación de Empresas, Recaudación y Fiscalización. Catálogo publicado en el portal del SAT en internet</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:int">
						<xs:minInclusive value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="SalarioDiarioIntegrado" type="nomina:t_Importe" use="required">
				<xs:annotation>
					<xs:documentation>Salario diario integrado</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="t_CURP">
		<xs:annotation>
			<xs:documentation>Tipo definido para la expresión de una CURP</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:length value="18"/>
			<xs:pattern value="[A-Z][A,E,I,O,U,X][A-Z]{2}[0-9]{2}[0-1][0-9][0-3][0-9][M,H][A-Z]{2}[B,C,D,F,G,H,J,K,L,M,N,Ñ,P,Q,R,S,T,V,W,X,Y,Z]{3}[0-9,A-Z][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="t_Importe">
		<xs:annotation>
			<xs:documentation>Tipo definido para expresar importes numéricos con fracción hasta seis decimales</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:fractionDigits value="6"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="t_Clabe">
		<xs:annotation>
			<xs:documentation>Tipo definido para expresar la CLABE interbancaria</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:pattern value="[0-9]{18}"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
